Set up

Data Wrangling

Participant Demographics

ont_ctry_name
Ecuador   Ghana    Peru      US 
     20      70      40      49 
             ont_version
ont_ctry_name  1  2
      Ecuador 10 10
      Ghana   35 35
      Peru    21 19
      US      21 28
             ont_sex
ont_ctry_name  .  1  2
      Ecuador  0  9 11
      Ghana    0 32 38
      Peru     0 25 15
      US       1 26 22
                                                      ont_ctry_name
tolower(ont_ethn)                                      Ecuador Ghana Peru US
  .                                                          0     1    0  2
  a little bit of everything / caucasian/ puerto rican       0     0    0  1
  ahanta                                                     0     1    0  0
  akan- fante                                                0     1    0  0
  american - hispanic / anglo                                0     0    0  1
  asante/akan                                                0     1    0  0
  asian                                                      0     0    0  1
  asian + caucasian                                          0     0    0  1
  black                                                      0     0    0  2
  black + puerto rican                                       0     0    0  1
  caucasian                                                  0     0    0 22
  denkyiranyi (asante)                                       0     1    0  0
  earth inn                                                  0     0    0  1
  east indian                                                0     0    0  1
  ekuapim                                                    0     1    0  0
  fante                                                      0    49    0  0
  fante (akromah)                                            0     1    0  0
  fante (amosima)                                            0     1    0  0
  fante (brenu)                                              0     1    0  0
  fante (new ebu)                                            0     2    0  0
  fante (otum in central region)                             0     1    0  0
  fantenyi                                                   0     2    0  0
  fanti                                                      0     1    0  0
  fanti (cape-coast)                                         0     1    0  0
  fanti (egyankwa)                                           0     1    0  0
  fanti (yamoransa)                                          0     1    0  0
  fanti(ahanta)                                              0     1    0  0
  hispanic                                                   0     0    0  1
  hispanic / caucasian                                       0     0    0  1
  hispanic / native american                                 0     0    0  1
  i am a fante.                                              0     1    0  0
  irish                                                      0     0    0  1
  irish/scottish/caucasian                                   0     0    0  1
  italian                                                    0     0    0  1
  italian/american                                           0     0    0  1
  kichua                                                     1     0    0  0
  mexican american                                           0     0    0  1
  mexican/italian                                            0     0    0  1
  mut                                                        0     0    0  1
  n. european                                                0     0    0  1
  northner                                                   0     1    0  0
  persian                                                    0     0    0  1
  portuguese                                                 0     0    0  1
  salvadorian                                                0     0    0  1
  scandanavian                                               0     0    0  1
  scottish / english                                         0     0    0  1
  shipibo                                                    0     0   40  0
  waorani                                                   13     0    0  0
  waorani and kichua                                         6     0    0  0
                                             ont_ctry_name
tolower(ont_hied)                             Ecuador Ghana Peru US
  .                                                 1     1    0  1
  0                                                 0     1    0  0
  10th grade                                        2     0    0  0
  11th grade                                        5     0    0  0
  12th grade                                        9     0    0  0
  1st yr college                                    0     0    0  1
  3 yrs college                                     0     0    0  1
  8th grade                                         1     0    0  0
  9th grade                                         1     0    0  0
  abakrampa senior high school                      0     1    0  0
  abakrampa senior technical                        0     1    0  0
  abk senior high                                   0     1    0  0
  associate                                         0     0    0  1
  associate's                                       0     0    0  2
  ba                                                1     0    0  3
  ba + teaching                                     0     0    0  1
  bacelors                                          0     0    0  1
  bachelor of science                               0     0    0  1
  bachelor's                                        0     0    0  2
  bachelors                                         0     0    0  3
  brenu methodist school                            0     1    0  0
  bs                                                0     0    0  3
  college                                           0     0    0  3
  college grad                                      0     0    0  1
  did not complete junior high school               0     1    0  0
  doctorate                                         0     0    0  1
  elementary                                        0     1    0  0
  form 4                                            0     3    0  0
  form 4 (junior secondary school)                  0     1    0  0
  ged                                               0     0    0  2
  grad levels                                       0     0    0  1
  grad school                                       0     0    0  1
  graduate                                          0     0    0  1
  graduated college                                 0     0    0  1
  have not yet completed junior high school         0     1    0  0
  high school                                       0     0    0  1
  high school / some college                        0     0    0  1
  high school some trade school                     0     0    0  1
  hs                                                0     0    0  2
  hs graduate                                       0     0    0  1
  i have finished tertiary                          0     1    0  0
  j.h.s (junior high school)                        0     1    0  0
  jackson college of education                      0     1    0  0
  jhs                                               0     1    0  0
  junior college                                    0     0    0  1
  junior high                                       0     0    0  1
  junior high school                                0    11    0  0
  junior high school graduate                       0     2    0  0
  masters                                           0     0    0  2
  mba                                               0     0    0  1
  methodist jhs                                     0     4    0  0
  methodist senior high (new ebu)                   0     1    0  0
  methodists junior and senior high (new ebu)       0     1    0  0
  methodists junior secondary school, class 6       0     1    0  0
  methodists primary                                0     1    0  0
  middle school                                     0     1    0  0
  new ebu da jhs                                    0     1    0  0
  new ebu methodist middle school (1971)            0     1    0  0
  nursing training                                  0     1    0  0
  post-grad                                         0     0    0  1
  primary                                           0     1    0  0
  roman catholic girls                              0     1    0  0
  s.h.s                                             0     1    0  0
  secondary school                                  0     1    0  0
  self- hs                                          0     0    0  1
  seminary school                                   0     1    0  0
  senior high schol                                 0     1    0  0
  senior high school                                0     5    0  0
  senior high school graduate                       0     3    0  0
  shs                                               0     3    0  0
  shs- technical school                             0     1    0  0
  sm college                                        0     0    0  1
  some college                                      0     0    0  4
  stan 7                                            0     1    0  0
  takoradi senior secondary school                  0     1    0  0
  uneducated                                        0     5    0  0
  uneducated, did not attend school                 0     1    0  0
  university of cape coast                          0     2    0  0
             as.numeric(ont_imgd)
ont_ctry_name -2 -1  0  1  2
      Ecuador  6  1 10  2  0
      Ghana    0  1  0 13 56
      Peru     0  0  3  2 34
      US      15  9  5  5 13
                                                                   ont_ctry_name
tolower(ont_chfq)                                                   Ecuador Ghana Peru US
  .                                                                       0     1    1  2
  0                                                                      15     0    1  5
  1x/week                                                                 0     0    0  2
  2 times a week.                                                         0     0    1  0
  2 times in a week                                                       0     1    0  0
  2x/week                                                                 0     0    0  1
  3 times a month                                                         0     0    1  0
  3 times a week                                                          0     3    2  0
  3 times in a week                                                       0     1    0  0
  3 to 4 times a year                                                     0     0    1  0
  4 times a month                                                         0     1    1  0
  4 times a week                                                          0     2   15  0
  4 times in a week                                                       0     1    0  0
  4,6, 8 times a month                                                    0     0    1  0
  5 times a week                                                          0     2    1  0
  5, 6 to 7 times a year                                                  0     0    1  0
  7 times a week                                                          0     1    0  0
  8 times a month                                                         0     0    1  0
  a few times in a year                                                   0     1    0  0
  a lot of times                                                          0     1    0  0
  abundant life                                                           0     0    0  1
  cathedral of faith, jubilee church on the hill, catholic churches       0     0    0  1
  catholic                                                                0     0    0  1
  every day                                                               0     1    0  0
  every saturday                                                          0     1    0  0
  every sunday                                                            0     8    0  2
  every sunday, once a week                                               0     1    0  0
  every week                                                              0     2    0  0
  everyday                                                                0     3    0  0
  everyday in new eden                                                    0     0    1  0
  fante comment                                                           0     3    0  0
  from time to time                                                       0     0    2  0
  i don't usually go                                                      0     2    0  0
  i don't usually go.                                                     0     1    0  0
  i go to jesus divine temple. people popularly call it mountain.         0     1    0  0
  infrequent                                                              3     0    0  0
  infrequent but used to preach a few years ago                           1     0    0  0
  it's been long                                                          0     1    0  0
  like five times in a year                                               0     1    0  0
  lutheran prince of peace                                                0     0    0  1
  many times                                                              0     1    0  0
  many times.                                                             0     1    0  0
  many times. every week unless i can't and then i rest.                  0     1    0  0
  mdata                                                                   0     0    0  1
  n/a                                                                     0     0    0 12
  na                                                                      0     0    0 15
  not always but i go 3 times a week                                      0     0    1  0
  not anymore                                                             0     0    0  1
  not often                                                               0     0    0  1
  now i don't go to church.                                               0     1    0  0
  often                                                                   0     3    0  0
  once a month                                                            0     0    1  0
  once a month or two months                                              0     1    0  0
  once a week                                                             0     0    3  0
  once a year                                                             0     0    2  0
  once every 2 years                                                      0     1    0  0
  once every week                                                         0     1    0  0
  once every weekend                                                      1     0    0  0
  once in a week                                                          0     1    0  0
  once in every 2 months                                                  0     1    0  0
  once in every 2 years                                                   0     1    0  0
  sunday weekly                                                           0     1    0  0
  three times                                                             0     1    0  0
  three times in a week.                                                  0     1    0  0
  thrice in a week                                                        0     1    0  0
  twice a week                                                            0     1    2  0
  twice in every week                                                     0     1    0  0
  twice in every week.                                                    0     1    0  0
  two times a week                                                        0     1    0  0
  very often                                                              0     3    0  0
  very often. every sunday                                                0     1    0  0
  virtually every sunday                                                  0     1    0  0
  weekly                                                                  0     2    0  2
  weekly catholic                                                         0     0    0  1
  when i am in school, i go to church every day                           0     1    0  0
  yes, once a month                                                       0     0    1  0
  you don't go at all.                                                    0     1    0  0
             as.numeric(ont_ses)
ont_ctry_name -2 -1  0  1  2
      Ecuador  0 10  9  1  0
      Ghana    4 17 15 31  3
      Peru    13  6 18  1  0
      US       2 13 23  8  1
             as.numeric(ont_affr)
ont_ctry_name  0  1
      Ecuador 20  0
      Ghana   23 47
      Peru    30  9
      US       5 43

Figure 1, Accompanying Analyses & Appendix C regression results

The goal here is to combine confidence and existence scores. The confidence graph above shows people’s confidence ratings regardless of whether they said the object existed or not. So, I will combine them this way: - if they said it doesn’t exist -1 - if they said it does exist 1 - if they said they don’t know *0

This way, a person who said they don’t know if it exists and a person who said it did or didn’t but said they were “not sure” will both get a score of 0. A person who is “very sure” it doesn’t exist will get a score of -3 and a person who is “very sure” it does exist will get a score of 3.

Graphing Figure 1

Models predicting confidence x existence scores by category with separate regressions for each country. The pairwise contrasts here showing ordinary vs. supernatural and scientific vs. supernatural are what make up Table 2. Full results are reported in Appendix C.

 contrast                  estimate    SE  df t.ratio p.value
 Ordinary - Scientific       0.1076 0.175 208   0.615  0.5393
 Ordinary - Supernatural     0.1367 0.156 205   0.874  0.3830
 Ordinary - Fictional        2.0389 0.212 213   9.627  <.0001
 Scientific - Supernatural   0.0291 0.136 210   0.214  0.8305
 Scientific - Fictional      1.9313 0.197 213   9.821  <.0001
 Supernatural - Fictional    1.9022 0.181 217  10.516  <.0001

Degrees-of-freedom method: kenward-roger 

Model predicting confidence x existence scores by category pooling across non-US countries. These results show that when you combine all non-US country responses together, the difference between ordinary and supernatural confidence ratings are significant.

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_ctry_name/ont_subj)
   Data: filter(df_ext_usens_conf, ont_ctry_name != "US")

REML criterion at convergence: 1924

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.3864 -0.4471  0.2510  0.5377  2.2025 

Random effects:
 Groups                 Name        Variance Std.Dev.
 ont_subj:ont_ctry_name (Intercept) 0.113627 0.33709 
 ont_ctry_name          (Intercept) 0.003539 0.05949 
 Residual                           0.844475 0.91895 
Number of obs: 691, groups:  ont_subj:ont_ctry_name, 130; ont_ctry_name, 3

Fixed effects:
                           Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)                 2.72942    0.09344   3.60849  29.210 2.03e-05 ***
question_typeScientific    -0.29739    0.10470 563.96137  -2.840  0.00467 ** 
question_typeSupernatural  -0.23851    0.09985 550.18991  -2.389  0.01724 *  
question_typeFictional     -1.63053    0.11738 560.02347 -13.891  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) qstn_typSc qstn_typSp
qstn_typScn -0.664                      
qstn_typSpr -0.698  0.618               
qstn_typFct -0.591  0.529      0.551    
 contrast                  estimate     SE  df t.ratio p.value
 Ordinary - Scientific       0.2974 0.1050 569   2.840  0.0047
 Ordinary - Supernatural     0.2385 0.1010 564   2.373  0.0180
 Ordinary - Fictional        1.6305 0.1180 565  13.874  <.0001
 Scientific - Supernatural  -0.0589 0.0903 590  -0.652  0.5144
 Scientific - Fictional      1.3331 0.1080 573  12.292  <.0001
 Supernatural - Fictional    1.3920 0.1060 561  13.190  <.0001

Degrees-of-freedom method: kenward-roger 

Model predicting confidence x existence scores by category, but only for highest contrast ordinary vs. supernatural items (coffee cups & tables vs. God & demons). These results show that these highest contrasts are significantly different in the US and Ghana, but not in Ecuador and Peru (in Ecuador, our smallest sample size, there are hints that this effect might be found in future similar studies). See Appendix A for full confidence and existence ratings broken down by item, version, and country.

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf %>% filter(ont_ctry_name == "US", item_code %in%      c("mug", "tbl", "dem", "god"))

REML criterion at convergence: 374.1

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.09043  0.01938  0.02299  0.58511  1.29077 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.008797 0.09379 
 Residual             3.134276 1.77039 
Number of obs: 94, groups:  ont_subj, 49

Fixed effects:
                          Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)                 2.9592     0.2533 91.9994   11.68  < 2e-16 ***
question_typeSupernatural  -2.2481     0.3656 48.9678   -6.15 1.38e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.691
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Ghana", item_code %in%      c("mug", "tbl", "dem", "god"))

REML criterion at convergence: 291.4

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.3442 -0.1527 -0.0012  0.5653  1.7544 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.2286   0.4781  
 Residual             0.2804   0.5296  
Number of obs: 140, groups:  ont_subj, 70

Fixed effects:
                           Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)                 2.75714    0.08527 114.84211  32.333  < 2e-16 ***
question_typeSupernatural  -0.30000    0.08951  69.00000  -3.352  0.00131 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.525
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Ecuador", item_code %in%      c("mug", "tbl", "wen", "god"))

REML criterion at convergence: 106.7

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.0684 -0.3950  0.1042  0.7610  1.1422 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.2511   0.5011  
 Residual             0.6754   0.8218  
Number of obs: 39, groups:  ont_subj, 20

Fixed effects:
                          Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)                 2.6500     0.2152 34.6335  12.312 3.32e-14 ***
question_typeSupernatural  -0.5397     0.2642 18.9685  -2.043   0.0552 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.594
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Peru", item_code %in%      c("taz", "tbl", "oni", "god"))

REML criterion at convergence: 125.4

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.2867  0.4317  0.4317  0.4471  0.7038 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.01877  0.1370  
 Residual             0.25314  0.5031  
Number of obs: 79, groups:  ont_subj, 40

Fixed effects:
                           Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)                2.750000   0.082449 76.628610  33.354   <2e-16 ***
question_typeSupernatural -0.007738   0.113272 38.128326  -0.068    0.946    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.678

Figure 2 & Accompanying Analyses

Models predicting “Can people communicate with X?” responses by category. The pairwise contrasts from these models are reported in the manuscript under the section “Additional Questions Reflect Differences in Epistemic Frames”

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
   Data: filter(data_long_comm, ont_ctry_name == "US")

REML criterion at convergence: 262

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-1.9138 -0.6348 -0.1107  0.6635  2.5365 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.08442  0.2905  
 Residual             0.12076  0.3475  
Number of obs: 244, groups:  ont_subj, 49

Fixed effects:
                      Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)            0.36735    0.06471 142.69707   5.677  7.4e-08 ***
categoryScientific    -0.03998    0.06510 193.23170  -0.614    0.540    
categoryFictional     -0.10204    0.07021 191.90328  -1.453    0.148    
categorySupernatural   0.28896    0.06399 193.08577   4.515  1.1e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) ctgrySc ctgryF
ctgryScntfc -0.585               
catgryFctnl -0.542  0.539        
ctgrySprntr -0.595  0.581   0.549
 contrast                  estimate     SE  df t.ratio p.value
 Ordinary - Scientific       0.0400 0.0651 193   0.614  0.5399
 Ordinary - Fictional        0.1020 0.0702 192   1.453  0.1477
 Ordinary - Supernatural    -0.2890 0.0640 193  -4.515  <.0001
 Scientific - Fictional      0.0621 0.0651 193   0.953  0.3417
 Scientific - Supernatural  -0.3289 0.0591 198  -5.564  <.0001
 Fictional - Supernatural   -0.3910 0.0640 193  -6.109  <.0001

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
   Data: filter(data_long_comm, ont_ctry_name == "Ghana")

REML criterion at convergence: 131.2

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.94583 -0.33207 -0.08662  0.63525  2.97487 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.006527 0.08079 
 Residual             0.075654 0.27505 
Number of obs: 350, groups:  ont_subj, 70

Fixed effects:
                      Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)            0.02143    0.03426 337.26679   0.625    0.532    
categoryScientific     0.03737    0.04253 282.33502   0.879    0.380    
categoryFictional      0.24286    0.04649 277.00891   5.224 3.45e-07 ***
categorySupernatural   0.78644    0.04253 282.33502  18.492  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) ctgrySc ctgryF
ctgryScntfc -0.742               
catgryFctnl -0.678  0.547        
ctgrySprntr -0.742  0.593   0.547
 contrast                  estimate     SE  df t.ratio p.value
 Ordinary - Scientific      -0.0374 0.0425 282  -0.879  0.3804
 Ordinary - Fictional       -0.2429 0.0465 277  -5.224  <.0001
 Ordinary - Supernatural    -0.7864 0.0425 282 -18.486  <.0001
 Scientific - Fictional     -0.2055 0.0425 282  -4.830  <.0001
 Scientific - Supernatural  -0.7491 0.0384 302 -19.501  <.0001
 Fictional - Supernatural   -0.5436 0.0425 282 -12.777  <.0001

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
   Data: filter(data_long_comm, ont_ctry_name == "Ecuador")

REML criterion at convergence: 61.5

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.6608 -0.2785 -0.1655  0.5305  2.9256 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.001555 0.03944 
 Residual             0.102169 0.31964 
Number of obs: 90, groups:  ont_subj, 20

Fixed effects:
                     Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)           0.05000    0.07202 85.91024   0.694    0.489    
categoryScientific    0.03612    0.09295 71.44265   0.389    0.699    
categoryFictional     0.78346    0.10389 71.05523   7.541 1.18e-10 ***
categorySupernatural  0.68932    0.09782 73.01647   7.047 8.52e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) ctgrySc ctgryF
ctgryScntfc -0.763               
catgryFctnl -0.683  0.529        
ctgrySprntr -0.725  0.562   0.503
 contrast                  estimate     SE   df t.ratio p.value
 Ordinary - Scientific      -0.0361 0.0931 69.4  -0.388  0.6993
 Ordinary - Fictional       -0.7835 0.1040 68.9  -7.533  <.0001
 Ordinary - Supernatural    -0.6893 0.0981 71.1  -7.024  <.0001
 Scientific - Fictional     -0.7473 0.0963 71.1  -7.759  <.0001
 Scientific - Supernatural  -0.6532 0.0901 75.0  -7.248  <.0001
 Fictional - Supernatural    0.0941 0.1010 72.1   0.931  0.3548

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
   Data: filter(data_long_comm, ont_ctry_name == "Peru")

REML criterion at convergence: 245.5

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-1.45840 -1.11107 -0.01983  1.14905  2.42631 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.003096 0.05564 
 Residual             0.147084 0.38352 
Number of obs: 248, groups:  ont_subj, 40

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)          -3.001e-16  6.127e-02  2.433e+02   0.000    1.000    
categoryScientific    1.601e-02  7.833e-02  2.090e+02   0.204    0.838    
categoryFictional     4.277e-01  9.368e-02  2.145e+02   4.565 8.39e-06 ***
categorySupernatural  5.419e-01  7.010e-02  2.053e+02   7.731 4.68e-13 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) ctgrySc ctgryF
ctgryScntfc -0.766               
catgryFctnl -0.641  0.502        
ctgrySprntr -0.856  0.670   0.560
 contrast                  estimate     SE  df t.ratio p.value
 Ordinary - Scientific       -0.016 0.0784 209  -0.204  0.8384
 Ordinary - Fictional        -0.428 0.0938 215  -4.560  <.0001
 Ordinary - Supernatural     -0.542 0.0701 206  -7.731  <.0001
 Scientific - Fictional      -0.412 0.0870 215  -4.733  <.0001
 Scientific - Supernatural   -0.526 0.0608 212  -8.644  <.0001
 Fictional - Supernatural    -0.114 0.0797 218  -1.433  0.1533

Degrees-of-freedom method: kenward-roger 

Figure 3 & Accompanying Analyses

Models predicting “Can X be experienced by anyone or only by specific people?” responses by category. The pairwise contrasts from these models are reported in the manuscript under the section “Additional Questions Reflect Differences in Epistemic Frames”

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
   Data: filter(data_long_spec, ont_ctry_name == "US")

REML criterion at convergence: 220.1

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-0.9216 -0.7635 -0.2711 -0.2271  2.4120 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.002358 0.04856 
 Residual             0.139782 0.37387 
Number of obs: 234, groups:  ont_subj, 49

Fixed effects:
                       Estimate Std. Error         df t value Pr(>|t|)   
(Intercept)            0.102041   0.053859 229.724066   1.895  0.05940 . 
categoryScientific    -0.002248   0.069678 189.097447  -0.032  0.97429   
categoryFictional      0.197425   0.077221 187.294488   2.557  0.01136 * 
categorySupernatural   0.197507   0.069704 192.401201   2.834  0.00509 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) ctgrySc ctgryF
ctgryScntfc -0.760               
catgryFctnl -0.686  0.530        
ctgrySprntr -0.760  0.586   0.531
 contrast                   estimate     SE  df t.ratio p.value
 Ordinary - Scientific      2.25e-03 0.0697 188   0.032  0.9743
 Ordinary - Fictional      -1.97e-01 0.0772 186  -2.556  0.0114
 Ordinary - Supernatural   -1.98e-01 0.0698 191  -2.831  0.0051
 Scientific - Fictional    -2.00e-01 0.0716 194  -2.788  0.0058
 Scientific - Supernatural -2.00e-01 0.0636 210  -3.139  0.0019
 Fictional - Supernatural  -8.18e-05 0.0715 188  -0.001  0.9991

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
   Data: filter(data_long_spec, ont_ctry_name == "Ecuador")

REML criterion at convergence: 66.1

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-1.17331 -0.34012 -0.19720 -0.01107  2.76448 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.003315 0.05757 
 Residual             0.103822 0.32221 
Number of obs: 93, groups:  ont_subj, 20

Fixed effects:
                      Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)          4.938e-17  7.319e-02 8.861e+01   0.000 1.000000    
categoryScientific   7.054e-02  9.447e-02 7.282e+01   0.747 0.457679    
categoryFictional    1.060e-01  1.033e-01 7.081e+01   1.027 0.308029    
categorySupernatural 3.470e-01  9.597e-02 7.287e+01   3.615 0.000549 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) ctgrySc ctgryF
ctgryScntfc -0.751               
catgryFctnl -0.687  0.532        
ctgrySprntr -0.739  0.571   0.524
 contrast                  estimate     SE   df t.ratio p.value
 Ordinary - Scientific      -0.0705 0.0947 72.9  -0.745  0.4587
 Ordinary - Fictional       -0.1060 0.1030 70.9  -1.026  0.3083
 Ordinary - Supernatural    -0.3470 0.0962 72.9  -3.606  0.0006
 Scientific - Fictional     -0.0355 0.0963 74.2  -0.368  0.7136
 Scientific - Supernatural  -0.2764 0.0891 80.2  -3.103  0.0026
 Fictional - Supernatural   -0.2409 0.0977 73.2  -2.467  0.0160

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
   Data: filter(data_long_spec, ont_ctry_name == "Peru")

REML criterion at convergence: 250.4

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-0.79931 -0.72533 -0.66887  0.03252  2.27273 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.001803 0.04247 
 Residual             0.154486 0.39305 
Number of obs: 243, groups:  ont_subj, 40

Fixed effects:
                      Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)          8.852e-17  6.251e-02 2.388e+02   0.000 1.000000    
categoryScientific   2.796e-01  8.054e-02 2.062e+02   3.471 0.000631 ***
categoryFictional    1.064e-01  9.694e-02 2.116e+02   1.098 0.273642    
categorySupernatural 2.931e-01  7.207e-02 2.017e+02   4.066 6.85e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) ctgrySc ctgryF
ctgryScntfc -0.767               
catgryFctnl -0.637  0.495        
ctgrySprntr -0.857  0.665   0.553
 contrast                  estimate     SE  df t.ratio p.value
 Ordinary - Scientific      -0.2796 0.0806 206  -3.469  0.0006
 Ordinary - Fictional       -0.1064 0.0971 211  -1.096  0.2743
 Ordinary - Supernatural    -0.2931 0.0721 201  -4.066  0.0001
 Scientific - Fictional      0.1732 0.0904 212   1.915  0.0568
 Scientific - Supernatural  -0.0135 0.0629 208  -0.214  0.8304
 Fictional - Supernatural   -0.1867 0.0830 215  -2.248  0.0256

Degrees-of-freedom method: kenward-roger 

Figure 4

Can __ be sensed? This combines across all sensory questions for each item. The items differed from country to country and version to version. But almost all contain the questions: see, hear, smell, touch, feel. Many but not all also had a taste question.

Figure 5

Table 3 & Accompanying Analyses

Models predicting confidence x existence scores with consensus and sensory experience scores. The results are reported in Table 3 in the manuscript

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ consensus_excl_self + usens_response + (1 | ont_ctry_name/ont_subj)
   Data: df_ext_usens_conf

REML criterion at convergence: 2134.2

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.2610 -0.4330  0.0861  0.3859  3.9757 

Random effects:
 Groups                 Name        Variance Std.Dev.
 ont_subj:ont_ctry_name (Intercept) 0.132745 0.36434 
 ont_ctry_name          (Intercept) 0.009728 0.09863 
 Residual                           1.040922 1.02026 
Number of obs: 714, groups:  ont_subj:ont_ctry_name, 177; ont_ctry_name, 4

Fixed effects:
                     Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)          -2.92816    0.21417  76.07243 -13.672   <2e-16 ***
consensus_excl_self   5.00615    0.22733 354.91570  22.022   <2e-16 ***
usens_response        0.78817    0.09002 688.50272   8.756   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) cnsn__
cnsnss_xcl_ -0.900       
usens_rspns -0.099 -0.197
Regression Results: Effects of Consensus and Sensory Evidence on Confidence
Characteristic Beta 95% CI p-value
(Intercept) -2.9 -3.4, -2.5 <0.001
consensus_excl_self 5.0 4.6, 5.5 <0.001
usens_response 0.79 0.61, 0.96 <0.001
Abbreviation: CI = Confidence Interval

ALTERNATE CODING & FIG 1 et al

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "US")

REML criterion at convergence: 735.9

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-3.05877 -0.27588  0.01684  0.27397  2.88053 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.3683   0.6069  
 Residual             4.4209   2.1026  
Number of obs: 168, groups:  ont_subj, 49

Fixed effects:
                          Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)                 3.9592     0.3126 161.8633  12.664  < 2e-16 ***
question_typeScientific    -0.2245     0.4248 120.1173  -0.528    0.598    
question_typeSupernatural  -3.1020     0.4248 120.1173  -7.303 3.37e-11 ***
question_typeFictional     -6.1828     0.5557 140.3890 -11.127  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) qstn_typSc qstn_typSp
qstn_typScn -0.679                      
qstn_typSpr -0.679  0.500               
qstn_typFct -0.519  0.382      0.382    
 contrast                  estimate    SE  df t.ratio p.value
 Ordinary - Scientific        0.224 0.425 117   0.528  0.5982
 Ordinary - Supernatural      3.102 0.425 117   7.303  <.0001
 Ordinary - Fictional         6.183 0.558 138  11.072  <.0001
 Scientific - Supernatural    2.878 0.425 117   6.774  <.0001
 Scientific - Fictional       5.958 0.558 138  10.670  <.0001
 Supernatural - Fictional     3.081 0.558 138   5.517  <.0001

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ghana")

REML criterion at convergence: 1160.3

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.5726 -0.3506  0.1818  0.4952  1.8554 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.1846   0.4296  
 Residual             1.4565   1.2068  
Number of obs: 349, groups:  ont_subj, 70

Fixed effects:
                          Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)                 3.7571     0.1531 328.0187  24.539   <2e-16 ***
question_typeScientific    -0.4260     0.1871 280.4269  -2.277   0.0235 *  
question_typeSupernatural  -0.3013     0.1867 280.3591  -1.614   0.1078    
question_typeFictional     -1.9429     0.2040 275.6218  -9.524   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) qstn_typSc qstn_typSp
qstn_typScn -0.726                      
qstn_typSpr -0.728  0.590               
qstn_typFct -0.666  0.545      0.546    
 contrast                  estimate    SE  df t.ratio p.value
 Ordinary - Scientific        0.426 0.187 281   2.276  0.0236
 Ordinary - Supernatural      0.301 0.187 281   1.613  0.1079
 Ordinary - Fictional         1.943 0.204 276   9.524  <.0001
 Scientific - Supernatural   -0.125 0.169 298  -0.736  0.4621
 Scientific - Fictional       1.517 0.187 281   8.106  <.0001
 Supernatural - Fictional     1.642 0.187 281   8.789  <.0001

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ecuador")

REML criterion at convergence: 324.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.7139 -0.5337  0.2668  0.5260  1.7660 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.17     0.4123  
 Residual             1.60     1.2649  
Number of obs: 96, groups:  ont_subj, 20

Fixed effects:
                          Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)                 3.6500     0.2975 88.3018  12.270  < 2e-16 ***
question_typeScientific    -0.5375     0.3690 73.8784  -1.457    0.149    
question_typeSupernatural  -0.5322     0.3713 73.2224  -1.434    0.156    
question_typeFictional     -1.9014     0.4056 72.2588  -4.688 1.27e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) qstn_typSc qstn_typSp
qstn_typScn -0.729                      
qstn_typSpr -0.724  0.579               
qstn_typFct -0.663  0.534      0.532    
 contrast                  estimate    SE   df t.ratio p.value
 Ordinary - Scientific      0.53746 0.370 75.2   1.454  0.1501
 Ordinary - Supernatural    0.53225 0.372 74.6   1.432  0.1564
 Ordinary - Fictional       1.90136 0.406 73.7   4.685  <.0001
 Scientific - Supernatural -0.00521 0.342 80.4  -0.015  0.9879
 Scientific - Fictional     1.36390 0.376 76.3   3.624  0.0005
 Supernatural - Fictional   1.36911 0.378 74.8   3.625  0.0005

Degrees-of-freedom method: kenward-roger 
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Peru")

REML criterion at convergence: 793

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.2876 -0.4473  0.2786  0.3683  2.6448 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.04796  0.219   
 Residual             1.28285  1.133   
Number of obs: 253, groups:  ont_subj, 40

Fixed effects:
                          Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)                 3.7500     0.1824 247.1351  20.559   <2e-16 ***
question_typeScientific    -0.1663     0.2307 215.1638  -0.721    0.472    
question_typeSupernatural  -0.1667     0.2068 211.7962  -0.806    0.421    
question_typeFictional     -2.8167     0.2691 217.8182 -10.467   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) qstn_typSc qstn_typSp
qstn_typScn -0.762                      
qstn_typSpr -0.850  0.672               
qstn_typFct -0.653  0.518      0.576    
 contrast                  estimate    SE  df t.ratio p.value
 Ordinary - Scientific      0.16633 0.231 214   0.721  0.4719
 Ordinary - Supernatural    0.16667 0.207 210   0.806  0.4212
 Ordinary - Fictional       2.81673 0.269 217  10.459  <.0001
 Scientific - Supernatural  0.00034 0.179 216   0.002  0.9985
 Scientific - Fictional     2.65040 0.248 217  10.692  <.0001
 Supernatural - Fictional   2.65006 0.226 219  11.718  <.0001

Degrees-of-freedom method: kenward-roger 

Model predicting confidence x existence scores by category pooling across non-US countries. These results show that when you combine all non-US country responses together, the difference between ordinary and supernatural confidence ratings are significant.

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_ctry_name/ont_subj)
   Data: filter(df_ext_usens_conf_ALT, ont_ctry_name != "US")

REML criterion at convergence: 2293.9

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.5239 -0.3322  0.2444  0.4483  2.0520 

Random effects:
 Groups                 Name        Variance Std.Dev.
 ont_subj:ont_ctry_name (Intercept) 0.1228   0.3504  
 ont_ctry_name          (Intercept) 0.0000   0.0000  
 Residual                           1.4453   1.2022  
Number of obs: 698, groups:  ont_subj:ont_ctry_name, 130; ont_ctry_name, 3

Fixed effects:
                          Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)                 3.7385     0.1098 674.2405  34.039  < 2e-16 ***
question_typeScientific    -0.3647     0.1366 571.9140  -2.671  0.00779 ** 
question_typeSupernatural  -0.2598     0.1302 578.2497  -1.996  0.04639 *  
question_typeFictional     -2.1671     0.1520 566.5738 -14.255  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) qstn_typSc qstn_typSp
qstn_typScn -0.741                      
qstn_typSpr -0.778  0.623               
qstn_typFct -0.666  0.536      0.561    
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')

 contrast                  estimate    SE  df t.ratio p.value
 Ordinary - Scientific        0.365 0.137 577   2.670  0.0078
 Ordinary - Supernatural      0.260 0.132 561   1.968  0.0495
 Ordinary - Fictional         2.167 0.152 572  14.240  <.0001
 Scientific - Supernatural   -0.105 0.118 581  -0.889  0.3746
 Scientific - Fictional       1.802 0.140 580  12.887  <.0001
 Supernatural - Fictional     1.907 0.137 541  13.951  <.0001

Degrees-of-freedom method: kenward-roger 

Model predicting confidence x existence scores by category, but only for highest contrast ordinary vs. supernatural items (coffee cups & tables vs. God & demons). These results show that these highest contrasts are significantly different in the US and Ghana, but not in Ecuador and Peru (in Ecuador, our smallest sample size, there are hints that this effect might be found in future similar studies). See Appendix A for full confidence and existence ratings broken down by item, version, and country.

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "US", item_code %in%      c("mug", "tbl", "dem", "god"))

REML criterion at convergence: 446.7

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.03793  0.01365  0.01586  0.47946  1.31969 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.01493  0.1222  
 Residual             5.65089  2.3772  
Number of obs: 98, groups:  ont_subj, 49

Fixed effects:
                          Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)                 3.9592     0.3400 95.9993  11.643  < 2e-16 ***
question_typeSupernatural  -3.1020     0.4803 48.0380  -6.459 4.95e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.706
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Ghana", item_code %in%      c("mug", "tbl", "dem", "god"))

REML criterion at convergence: 314.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.7306 -0.1313  0.0024  0.5628  1.5196 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.2505   0.5005  
 Residual             0.3438   0.5863  
Number of obs: 140, groups:  ont_subj, 70

Fixed effects:
                           Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)                 3.75714    0.09214 117.17884  40.776  < 2e-16 ***
question_typeSupernatural  -0.32857    0.09911  69.00000  -3.315  0.00146 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.538
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Ecuador",      item_code %in% c("mug", "tbl", "wen", "god"))

REML criterion at convergence: 122

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.0763 -0.2848  0.1576  0.7600  0.9070 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.2116   0.460   
 Residual             1.1538   1.074   
Number of obs: 39, groups:  ont_subj, 20

Fixed effects:
                          Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)                 3.6500     0.2613 36.1945  13.969 3.76e-16 ***
question_typeSupernatural  -0.6471     0.3448 19.0832  -1.877   0.0759 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.640
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
   Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Peru", item_code %in%      c("taz", "tbl", "oni", "god"))

REML criterion at convergence: 163.7

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.8913  0.2505  0.2505  0.4187  0.9844 

Random effects:
 Groups   Name        Variance Std.Dev.
 ont_subj (Intercept) 0.08974  0.2996  
 Residual             0.35385  0.5948  
Number of obs: 80, groups:  ont_subj, 40

Fixed effects:
                          Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)                 3.7500     0.1053 74.9330  35.610   <2e-16 ***
question_typeSupernatural  -0.1000     0.1330 39.0000  -0.752    0.457    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
qstn_typSpr -0.632

Appendix A: Responses by object, version, and country

Existence

US

Ghana

Ecuador

Peru

Confidence

US

Ghana

Ecuador

Peru

Communication

US

Ghana

Ecuador

Peru

Special People

US

Ghana

This question was not asked in Ghana

Ecuador

Peru

Can X be sensed?

US

Ghana

Ecuador

Peru

Have you ever sensed X?

US

Ghana

Ecuador

Peru

LS0tCnRpdGxlOiAiT250b2xvZ3lfZm9ycHViIgphdXRob3I6ICJFbGVhbm9yIFNjaGlsbGUtSHVkc29uIgpkYXRlOiAiMjAyNS0wNy0zMCIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgICB0b2M6IHllcwogICAgICBkZl9wcmludDogcGFnZWQKICAgICAgdG9jX2Zsb2F0OiB5ZXMKICBodG1sX25vdGVib29rOgogICAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgICAgdG9jOiB5ZXMKICAgICAgdG9jX2Zsb2F0OiB5ZXMKLS0tCgojIFNldCB1cCAKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1GLCB3YXJuaW5nPUYsIGNhY2hlPUYsIG1lc3NhZ2U9RikKYGBgCgpgYGB7cn0KI2xvYWRpbmcgcGFja2FnZXMKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KGZvcmNhdHMpCmxpYnJhcnkoUkNvbG9yQnJld2VyKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KGthYmxlRXh0cmEpCmxpYnJhcnkocHVycnIpCmxpYnJhcnkobG1lNCkKbGlicmFyeShsbWVyVGVzdCkKbGlicmFyeShlbW1lYW5zKQpsaWJyYXJ5KGd0c3VtbWFyeSkKCmxldmVsc190eXBlIDwtIGMoIk9yZGluYXJ5IiwgIlNjaWVudGlmaWMiLCAiU3VwZXJuYXR1cmFsIiwgIkZpY3Rpb25hbCIpCmxldmVsc19jb3VudHJ5IDwtIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpCmBgYAoKYGBge3J9CiNsb2FkaW5nIGRhdGEgCmRmX3JhdyA8LSByZWFkX2V4Y2VsKHBhdGggPSAib250b2xvZ3lfZGF0YS54bHN4IikKYGBgCgpgYGB7cn0KI21ha2luZyBzb21lIG1vZGlmaWNhdGlvbnMKCmRmIDwtIGRmX3JhdyAlPiUKICBtdXRhdGUob250X2N0cnlfbmFtZSA9IGNhc2Vfd2hlbigKICAgIG9udF9jdHJ5ID09IDEgfiAiVVMiLAogICAgb250X2N0cnkgPT0gNCB+ICJHaGFuYSIsCiAgICBvbnRfY3RyeSA9PSA3IH4gIlBlcnUiLAogICAgb250X2N0cnkgPT0gNiB+ICJFY3VhZG9yIiwKICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfIAogICkpICU+JQogIHJlbG9jYXRlKG9udF9jdHJ5X25hbWUsIC5iZWZvcmUgPSBldmVyeXRoaW5nKCkpCgpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KI2NsZWFubHkgbG9hZGluZyBpbiBhbGwgY3VzdG9tIGZ1bmN0aW9ucyB0byBub3QgY2x1dHRlciB1cCB0aGlzIHJtZCBmaWxlIApzb3VyY2UoIi4vY3VzdG9tX2Z1bmN0aW9ucy5SIikKYGBgCgojIyBEYXRhIFdyYW5nbGluZwoKYGBge3J9CiNkZl9zZW5zIHJlcXVpcmVzIHNlbnNvcnlfdmFycywgd2hpY2ggaXMgY3JlYXRlZCBpbiB0aGUgY3VzdG9tX2Z1bmN0aW9ucy5SIGZpbGUKCiMgQ29tYmluZSBpbnRvIG9uZSBiaWcgZGZfc2VucwpkZl9zZW5zIDwtIHJlZHVjZShzZW5zb3J5X3ZhcnMsIGxlZnRfam9pbiwgYnkgPSAib250X3N1YmoiKQoKIyBSZWpvaW4gbWV0YWRhdGEKZGZfc2VucyA8LSBkZiAlPiUKICBzZWxlY3Qob250X3N1YmosIG9udF9jdHJ5X25hbWUsIG9udF92ZXJzaW9uKSAlPiUKICBsZWZ0X2pvaW4oZGZfc2VucywgYnkgPSAib250X3N1YmoiKQoKIyBkZl91c2VucyByZXF1aXJlcyB1c2Vuc192YXJzLCB3aGljaCBpcyBjcmVhdGVkIGluIHRoZSBjdXN0b21fZnVuY3Rpb25zLlIgZmlsZQoKIyBDb21iaW5lIGludG8gb25lIGJpZyBkZl9zZW5zCmRmX3VzZW5zIDwtIHJlZHVjZSh1c2Vuc192YXJzLCBsZWZ0X2pvaW4sIGJ5ID0gIm9udF9zdWJqIikKCiMgUmVqb2luIG1ldGFkYXRhCmRmX3VzZW5zIDwtIGRmICU+JQogIHNlbGVjdChvbnRfc3Viaiwgb250X2N0cnlfbmFtZSwgb250X3ZlcnNpb24pICU+JQogIGxlZnRfam9pbihkZl91c2VucywgYnkgPSAib250X3N1YmoiKQpgYGAKCmBgYHtyfQojIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBkYXRhIGZyYW1lIGluIHdoaWNoIG1hbnkgaW1wb3J0YW50IHZhcmlhYmxlcyBhcmUgY2FsY3VsYXRlZCwgaW5jbHVkaW5nIHRoZSBjb25zZW5zdXMgc2NvcmUgCmRmX2V4dF9sb25nIDwtIGRmICU+JSAKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUKICBzZWxlY3Qob250X2N0cnlfbmFtZSwgb250X3N1YmosCiAgICAgICAgIHNjaV9leHRfZ3JtLCBzcG5fZXh0X2RlbSwgb3JkX2V4dF9tdWcsIHNjaV9leHRfZnJjLCBmaWNfZXh0X3NtbiwKICAgICAgICAgc2NpX2V4dF9jbmMsIHNwbl9leHRfZ29kLCBvcmRfZXh0X3RibCwgc3BuX2V4dF9hYnMsIGZpY19leHRfa3drLAogICAgICAgICBzY2lfZXh0X2ZsdSwgc3BuX2V4dF93ZW4sIHNjaV9leHRfcGFyLCBmaWNfZXh0X3NwZCwgc3BuX2V4dF9va3csIGZpY19leHRfcmFtLCAKICAgICAgICAgc3BuX2V4dF95c2gsIGZpY19leHRfbmp0LCBzcG5fZXh0X2NoYSwgbmFzX2V4dF9yb24sIG9yZF9leHRfdGF6LCBzcG5fZXh0X29uaSwgbmFzX2V4dF9kbHAKICAgICAgICAgKSAlPiUKICBtdXRhdGUoYWNyb3NzKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoYygtb250X2N0cnlfbmFtZSwgLW9udF9zdWJqKSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUKICBtdXRhdGUoCiAgICByZXNwb25zZSA9IGlmZWxzZShyZXNwb25zZSA9PSA5OSwgMC41LCByZXNwb25zZSksCiAgICBxdWVzdGlvbl90eXBlID0gcmVjb2RlKHF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9mcmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2ZsdSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9wYXIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfZXh0X3RheiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfZGVtID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfd2VuID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfYWJzID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfeXNoID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc19leHRfcm9uID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfb25pID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfZXh0X2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X2t3ayA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NtbiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3JhbSA9ICJGaWN0aW9uYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2V4dF9uanQgPSAiRmljdGlvbmFsIiksIAogICAgCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lIAogIGdyb3VwX2J5KG9udF9jdHJ5X25hbWUsIHF1ZXN0aW9uKSAlPiUKICBtdXRhdGUoY29uc2Vuc3VzX2V4Y2xfc2VsZiA9IChzdW0ocmVzcG9uc2UsIG5hLnJtID0gVFJVRSkgLSByZXNwb25zZSkvKG4oKS0xKSwKICAgICAgICAgY29uc2Vuc3VzID0gKHN1bShyZXNwb25zZSwgbmEucm0gPSBUUlVFKS9uKCkpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBtdXRhdGUoaXRlbV9jb2RlID0gc3RyX2V4dHJhY3QocXVlc3Rpb24sICJbXl9dKyQiKSkgI2V4dHJhY3RpbmcgZmluYWwgMyBjaGFyYWN0ZXJzCgojIG1ha2luZyBsb25nIHVzZW5zIGRmIApkZl91c2Vuc19sb25nIDwtIGRmX3VzZW5zICU+JSAKICBzZWxlY3QoLW9udF92ZXJzaW9uKSAlPiUgCiAgcGl2b3RfbG9uZ2VyKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIG5hbWVzX3RvID0gInVzZW5zX3F1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInVzZW5zX3Jlc3BvbnNlIikgJT4lCiAgZmlsdGVyKCFpcy5uYSh1c2Vuc19yZXNwb25zZSkpICU+JSAKICBtdXRhdGUoaXRlbV9jb2RlID0gc3RyX2V4dHJhY3QodXNlbnNfcXVlc3Rpb24sICJbXl9dKyQiKSkgI2V4dHJhY3RpbmcgZmluYWwgMyBjaGFyYWN0ZXJzCgojIG1ha2luZyBsb25nIGNvbmZpZGVuY2UgZGYKZGZfY29uZl9sb25nIDwtIGRmICU+JSAKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUgIAogICAgc2VsZWN0KG9udF9jdHJ5X25hbWUsIG9udF9zdWJqLAogICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0sIHNwbl9jb25mLmV4dF9kZW0sIG9yZF9jb25mLmV4dF9tdWcsIHNjaV9jb25mLmV4dF9ndnQsIGZpY19jb25mLmV4dF9zbW4sCiAgICAgICAgICAgc2NpX2NvbmYuZXh0X2NuYywgc3BuX2NvbmYuZXh0X2dvZCwgb3JkX2NvbmYuZXh0X3RibCwgc3BuX2NvbmYuZXh0X2docywgZmljX2NvbmYuZXh0X2hhcCwgIAogICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0sIHNwbl9jb25mLmV4dF9kZW0sIG9yZF9jb25mLmV4dF9tdWcsIHNjaV9jb25mLmV4dF9mcmMsIGZpY19jb25mLmV4dF9zbW4sICAKICAgICAgICAgICBzY2lfY29uZi5leHRfY25jLCBzcG5fY29uZi5leHRfZ29kLCBvcmRfY29uZi5leHRfdGJsLCBzcG5fY29uZi5leHRfYWJzLCBmaWNfY29uZi5leHRfa3drLCAgCiAgICAgICAgICAgc2NpX2NvbmYuZXh0X2ZsdSwgc3BuX2NvbmYuZXh0X3dlbiwgb3JkX2NvbmYuZXh0X211Zywgc2NpX2NvbmYuZXh0X3BhciwgZmljX2NvbmYuZXh0X3NwZCwgIAogICAgICAgICAgIHNjaV9jb25mLmV4dF9jbmMsIHNwbl9jb25mLmV4dF9nb2QsIG9yZF9jb25mLmV4dF90YmwsIHNwbl9jb25mLmV4dF9va3csIGZpY19jb25mLmV4dF9yYW0sICAKICAgICAgICAgICBzcG5fY29uZi5leHRfeXNoLCBzY2lfY29uZi5leHRfcGFyLCBzcG5fY29uZi5leHRfZ29kLCBvcmRfY29uZi5leHRfdGJsLCAgCiAgICAgICAgICAgZmljX2NvbmYuZXh0X25qdCwgc3BuX2NvbmYuZXh0X2NoYSwgc2NpX2NvbmYuZXh0X2NuYywgIAogICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0sIG5hc19jb25mLmV4dF9yb24sIG9yZF9jb25mLmV4dF90YXosIHNwbl9jb25mLmV4dF9vbmksICAKICAgICAgICAgICBmaWNfY29uZi5leHRfc21uLCBuYXNfY29uZi5leHRfZGxwKSAlPiUgIAogICAgbXV0YXRlKGFjcm9zcygtb250X2N0cnlfbmFtZSwgYXMubnVtZXJpYykpICU+JQogICAgcGl2b3RfbG9uZ2VyKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIG5hbWVzX3RvID0gImNvbmZfcXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAiY29uZl9yZXNwb25zZSIpICU+JSAgCiAgICBmaWx0ZXIoIWlzLm5hKGNvbmZfcmVzcG9uc2UpKSAlPiUgIAogICAgbXV0YXRlKGNhdGVnb3J5ID0gcmVjb2RlKGNvbmZfcXVlc3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0gPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9mcmMgPSAiU2NpZW50aWZpYyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfY29uZi5leHRfY25jID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2NvbmYuZXh0X2ZsdSA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9wYXIgPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9ndnQgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2NvbmYuZXh0X211ZyA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfY29uZi5leHRfdGJsID0gIk9yZGluYXJ5IiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9jb25mLmV4dF90YXogPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbmYuZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbmYuZXh0X2RlbSA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfd2VuID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfb2t3ID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfYWJzID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfeXNoID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfY2hhID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfY29uZi5leHRfcm9uID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfb25pID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfY29uZi5leHRfZGxwID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb25mLmV4dF9naHMgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X2t3ayA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X3NtbiA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X3NwZCA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X3JhbSA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X25qdCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb25mLmV4dF9oYXAgPSAiRmljdGlvbmFsIiksCiAgICAgICAgICAgb250X2N0cnlfbmFtZSA9IGZhY3RvcihvbnRfY3RyeV9uYW1lLCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSksCiAgICAgICAgICAgcmVzcG9uc2VfdHh0ID0gcmVjb2RlKGNvbmZfcmVzcG9uc2UsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDBgID0gIk5vdCBzdXJlIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgMWAgPSAiU29tZXdoYXQgc3VyZSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDJgID0gIlByZXR0eSBzdXJlIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgM2AgPSAiVmVyeSBzdXJlIikpICU+JSAKICBtdXRhdGUoaXRlbV9jb2RlID0gc3RyX2V4dHJhY3QoY29uZl9xdWVzdGlvbiwgIlteX10rJCIpKSAjZXh0cmFjdGluZyBmaW5hbCAzIGNoYXJhY3RlcnMKYGBgCgpgYGB7cn0KIyBqb2luaW5nIGludG8gb25lIGRhdGFmcmFtZQpkZl9leHRfdXNlbnNfY29uZiA8LSBsZWZ0X2pvaW4oCiAgZGZfZXh0X2xvbmcsIGRmX3VzZW5zX2xvbmcsIGJ5ID0gYygib250X2N0cnlfbmFtZSIsICJvbnRfc3ViaiIsICJpdGVtX2NvZGUiKQopICU+JSAKICBsZWZ0X2pvaW4oZGZfY29uZl9sb25nLCBieSA9IGMoIm9udF9jdHJ5X25hbWUiLCAib250X3N1YmoiLCAiaXRlbV9jb2RlIikpICU+JQogIG11dGF0ZShpdGVtX2NvZGUgPSBhcy5mYWN0b3IoaXRlbV9jb2RlKSwgCiAgICAgICAgIHF1ZXN0aW9uX3R5cGUgPSBmYWN0b3IocXVlc3Rpb25fdHlwZSwgbGV2ZWxzID0gbGV2ZWxzX3R5cGUpLCAKICAgICAgICAgb250X2N0cnlfbmFtZSA9IGZhY3RvcihvbnRfY3RyeV9uYW1lLCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSkpICNtYWtpbmcgdGhpcyBhIGZhY3RvciBzbyB3ZSBjYW4gZG8gb3JkaW5hbCByZWdyZXNzaW9uCmBgYAoKIyBQYXJ0aWNpcGFudCBEZW1vZ3JhcGhpY3MgCgpgYGB7cn0KIyBIb3cgbWFueSBwYXJ0aWNpcGFudHMgcGVyIGNvdW50cnk/IAp4dGFicyh+IG9udF9jdHJ5X25hbWUsIGRhdGEgPSBkZikKCiMgVmVyc2lvbiBvZiBxdWVzdGlvbnMgKHZlcnNpb24gMSBvciB2ZXJzaW9uIDIpIGJ5IGNvdW50cnkgCnh0YWJzKH4gb250X2N0cnlfbmFtZSArIG9udF92ZXJzaW9uLCBkYXRhID0gZGYpCmBgYAoKYGBge3J9CiNhZ2UKZGYgJT4lIAogIG11dGF0ZShvbnRfYWdlID0gYXMubnVtZXJpYyhvbnRfYWdlKSkgJT4lCiAgZ3JvdXBfYnkob250X2N0cnlfbmFtZSkgJT4lIAogIHN1bW1hcml6ZShuID0gbigpLAogICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4ob250X2FnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgbWVkX2FnZSA9IG1lZGlhbihvbnRfYWdlLCBuYS5ybSA9IFQpLCAKICAgICAgICAgICAgc2RfYWdlID0gc2Qob250X2FnZSwgbmEucm0gPSBUKSwgCiAgICAgICAgICAgIHJhbmdlX2FnZSA9IHBhc3RlMChtaW4ob250X2FnZSwgbmEucm0gPSBUKSwgIiAtICIsIG1heChvbnRfYWdlLCBuYS5ybSA9IFQpKSkgCgojc2V4IG1hbGUgPSAxCnh0YWJzKH4gb250X2N0cnlfbmFtZSArIG9udF9zZXgsIGRhdGEgPSBkZikKCiNldGhuaWNpdHkgCnh0YWJzKH4gdG9sb3dlcihvbnRfZXRobikgKyBvbnRfY3RyeV9uYW1lLCBkYXRhID0gZGYpCgojZWR1Y2F0aW9uIAp4dGFicyh+IHRvbG93ZXIob250X2hpZWQpICsgb250X2N0cnlfbmFtZSwgZGF0YSA9IGRmKQoKIyJpbXBvcnRhbmNlIG9mIGdvZCAiR29kIHBsYXlzIGEgdmVyeSBpbXBvcnRhbnQgcm9sZSBpbiBteSBsaWZlIChzdHJvbmdseSBkaXNhZ3JlZSB0byBzdHJvbmdseSBhZ3JlZSkKeHRhYnMofiBvbnRfY3RyeV9uYW1lICsgYXMubnVtZXJpYyhvbnRfaW1nZCksIGRhdGEgPSBkZikKCiNjaHVyY2ggYXR0ZW5kYW5jZQp4dGFicyh+IHRvbG93ZXIob250X2NoZnEpICsgb250X2N0cnlfbmFtZSwgZGF0YSA9IGRmKQoKIyBEbyB5b3UgdGhpbmsgeW91IGFyZSByaWNoZXIgb3IgcG9vcmVyIHRoYW4gbW9zdCBvZiB0aGUgcGVvcGxlIGluIHlvdXIgY29tbXVuaXR5PyAobXVjaCBwb29yZXIgLSBtdWNoIHJpY2hlcikKeHRhYnMofiBvbnRfY3RyeV9uYW1lICsgYXMubnVtZXJpYyhvbnRfc2VzKSwgZGF0YSA9IGRmKQoKIyBEbyB5b3UgZmVlbCB5b3UgY2FuIGFmZm9yZCB0byBidXkgdGhpbmdzIHlvdSBuZWVkLCBsaWtlIGNsb3RoaW5nIGFuZCBzaG9lcz8gKG5vL3llcykKeHRhYnMofiBvbnRfY3RyeV9uYW1lICsgYXMubnVtZXJpYyhvbnRfYWZmciksIGRhdGEgPSBkZikKYGBgCgojIEZpZ3VyZSAxLCBBY2NvbXBhbnlpbmcgQW5hbHlzZXMgJiBBcHBlbmRpeCBDIHJlZ3Jlc3Npb24gcmVzdWx0cwoKVGhlIGdvYWwgaGVyZSBpcyB0byBjb21iaW5lIGNvbmZpZGVuY2UgYW5kIGV4aXN0ZW5jZSBzY29yZXMuIFRoZSBjb25maWRlbmNlIGdyYXBoIGFib3ZlIHNob3dzIHBlb3BsZSdzIGNvbmZpZGVuY2UgcmF0aW5ncyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBzYWlkIHRoZSBvYmplY3QgZXhpc3RlZCBvciBub3QuIFNvLCBJIHdpbGwgY29tYmluZSB0aGVtIHRoaXMgd2F5OgotIGlmIHRoZXkgc2FpZCBpdCBkb2Vzbid0IGV4aXN0ICotMQotIGlmIHRoZXkgc2FpZCBpdCBkb2VzIGV4aXN0ICoxCi0gaWYgdGhleSBzYWlkIHRoZXkgZG9uJ3Qga25vdyAqMCAKClRoaXMgd2F5LCBhIHBlcnNvbiB3aG8gc2FpZCB0aGV5IGRvbid0IGtub3cgaWYgaXQgZXhpc3RzIGFuZCBhIHBlcnNvbiB3aG8gc2FpZCBpdCBkaWQgb3IgZGlkbid0IGJ1dCBzYWlkIHRoZXkgd2VyZSAibm90IHN1cmUiIHdpbGwgYm90aCBnZXQgYSBzY29yZSBvZiAwLiBBIHBlcnNvbiB3aG8gaXMgInZlcnkgc3VyZSIgaXQgZG9lc24ndCBleGlzdCB3aWxsIGdldCBhIHNjb3JlIG9mIC0zIGFuZCBhIHBlcnNvbiB3aG8gaXMgInZlcnkgc3VyZSIgaXQgZG9lcyBleGlzdCB3aWxsIGdldCBhIHNjb3JlIG9mIDMuIAoKYGBge3J9CiMgbWFraW5nIG5ldyBjb2x1bW4gb2YgZXhpc3RlbmNlIHJlc3BvbnNlIGRpcmVjdGlvbnMKZGZfZXh0X3VzZW5zX2NvbmYgPC0gZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogIG11dGF0ZShleHRfZGlyID0gY2FzZV93aGVuKAogICAgcmVzcG9uc2UgPT0gMSB+IDEsCiAgICByZXNwb25zZSA9PSAwIH4gLTEsCiAgICByZXNwb25zZSA9PSAwLjUgfiAwLAogICAgVFJVRSB+IHJlc3BvbnNlKSwgCiAgICBjb25mX2RpciA9IGNvbmZfcmVzcG9uc2UqZXh0X2RpciwgCiAgICBjb25mX2Rpcl90ZXh0ID0gY2FzZV93aGVuKAogICAgICBjb25mX2RpciA9PSAtMyB+ICJWZXJ5IHN1cmUgZG9lc24ndCBleGlzdCIsCiAgICAgIGNvbmZfZGlyID09IC0yIH4gIlByZXR0eSBzdXJlIGRvZXNuJ3QgZXhpc3QiLAogICAgICBjb25mX2RpciA9PSAtMSB+ICJTb21ld2hhdCBzdXJlIGRvZXNuJ3QgZXhpc3QiLAogICAgICBjb25mX2RpciA9PSAwIH4gIk5vdCBzdXJlIiwKICAgICAgY29uZl9kaXIgPT0gMSB+ICJTb21ld2hhdCBzdXJlIGV4aXN0cyIsCiAgICAgIGNvbmZfZGlyID09IDIgfiAiUHJldHR5IHN1cmUgZXhpc3RzIiwKICAgICAgY29uZl9kaXIgPT0gMyB+ICJWZXJ5IHN1cmUgZXhpc3RzIiksIAogICAgY29uZl9kaXJfdGV4dCA9IGZhY3Rvcihjb25mX2Rpcl90ZXh0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiVmVyeSBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiUHJldHR5IHN1cmUgZG9lc24ndCBleGlzdCIsICJTb21ld2hhdCBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiTm90IHN1cmUiLCAiU29tZXdoYXQgc3VyZSBleGlzdHMiLCAiUHJldHR5IHN1cmUgZXhpc3RzIiwgIlZlcnkgc3VyZSBleGlzdHMiKSkKICAgICkKYGBgCgpHcmFwaGluZyBGaWd1cmUgMQoKYGBge3IsIGZpZy53aWR0aD0xNX0KY29uZl9jb2xvcnMgPC0gKFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbCg3LCAiUmRZbEJ1IikpCgojIENyZWF0ZSBzdGFja2VkIGJhciBwbG90ICAKZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogIGZpbHRlcighaXMubmEoY29uZl9kaXJfdGV4dCkpICU+JSAKICBtdXRhdGUoY2F0ZWdvcnkgPSBmYWN0b3IoY2F0ZWdvcnksIGxldmVscyA9IGMoIk9yZGluYXJ5IiwgIlNjaWVudGlmaWMiLCAiU3VwZXJuYXR1cmFsIiwgIkZpY3Rpb25hbCIpKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2F0ZWdvcnksIGZpbGwgPSBjb25mX2Rpcl90ZXh0KSkgKyAgCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgICMgU3RhY2tlZCBwcm9wb3J0aW9ucwogICMgZ2VvbV90ZXh0KHN0YXQgPSAiY291bnQiLCBhZXMobGFiZWwgPSBhZnRlcl9zdGF0KGNvdW50KSksCiAgIyAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9maWxsKHZqdXN0ID0gMC41KSwKICAjICAgICAgICAgICBzaXplID0gNiwgY29sb3IgPSAid2hpdGUiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudF9mb3JtYXQoYWNjdXJhY3kgPSAxKSkgKyAKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb25mX2NvbG9ycywgZHJvcCA9IEZBTFNFKSArIAogIHRoZW1lX2J3KCkgKyAgCiAgbGFicygKICAgIHggPSAiQ2F0ZWdvcnkgb2YgT2JqZWN0cyIsICAKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiBSZXNwb25zZXMiLCAgCiAgICBmaWxsID0gIkNvbmZpZGVuY2UgeCBFeGlzdGVuY2UiLCAgCiAgICB0aXRsZSA9ICJDb25maWRlbmNlIHggRXhpc3RlbmNlIGJ5IENhdGVnb3J5IGFuZCBGaWVsZCBTaXRlIgogICkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSwgYW5nbGUgPSAtMzUsIHZqdXN0ID0gMSwgaGp1c3QgPSAwKSwKICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLAogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI1KSwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksIAogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksIAogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0xOCkpICsKICBmYWNldF93cmFwKH4gb250X2N0cnlfbmFtZSwgbmNvbCA9IDQpICAgIyBTZXBhcmF0ZSBwbG90cyBmb3IgZWFjaCBjb3VudHJ5CmBgYAoKCk1vZGVscyBwcmVkaWN0aW5nIGNvbmZpZGVuY2UgeCBleGlzdGVuY2Ugc2NvcmVzIGJ5IGNhdGVnb3J5IHdpdGggc2VwYXJhdGUgcmVncmVzc2lvbnMgZm9yIGVhY2ggY291bnRyeS4gVGhlIHBhaXJ3aXNlIGNvbnRyYXN0cyBoZXJlIHNob3dpbmcgb3JkaW5hcnkgdnMuIHN1cGVybmF0dXJhbCBhbmQgc2NpZW50aWZpYyB2cy4gc3VwZXJuYXR1cmFsIGFyZSB3aGF0IG1ha2UgdXAgVGFibGUgMi4gRnVsbCByZXN1bHRzIGFyZSByZXBvcnRlZCBpbiBBcHBlbmRpeCBDLiAKCmBgYHtyfQojIDEgcmVncmVzc2lvbiBwZXIgY291bnRyeSAoNCB0b3RhbCkgd2hlcmUgcmVzcG9uc2UgaXMgcHJlZGljdGVkIGJ5IGNhdGVnb3J5CgojIFVTCm0udXMgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmYsIG9udF9jdHJ5X25hbWUgPT0gIlVTIikpCnN1bW1hcnkobS51cykKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS51cyA8LSBlbW1lYW5zKG0udXMsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLnVzLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCgojIEdoYW5hCm0uZ2hhbmEgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmYsIG9udF9jdHJ5X25hbWUgPT0gIkdoYW5hIikpCnN1bW1hcnkobS5naGFuYSkKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5naGFuYSA8LSBlbW1lYW5zKG0uZ2hhbmEsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLmdoYW5hLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCgojIEVjdWFkb3IKbS5lY3VhZG9yIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRmX2V4dF91c2Vuc19jb25mLCBvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikpCnN1bW1hcnkobS5lY3VhZG9yKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmVjdWFkb3IgPC0gZW1tZWFucyhtLmVjdWFkb3IsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLmVjdWFkb3IsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgUGVydQptLnBlcnUgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmYsIG9udF9jdHJ5X25hbWUgPT0gIlBlcnUiKSkKc3VtbWFyeShtLnBlcnUpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0ucGVydSA8LSBlbW1lYW5zKG0ucGVydSwgfiBxdWVzdGlvbl90eXBlKQpjb250cmFzdChlbW0ucGVydSwgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKYGBgCgpNb2RlbCBwcmVkaWN0aW5nIGNvbmZpZGVuY2UgeCBleGlzdGVuY2Ugc2NvcmVzIGJ5IGNhdGVnb3J5IHBvb2xpbmcgYWNyb3NzIG5vbi1VUyBjb3VudHJpZXMuIFRoZXNlIHJlc3VsdHMgc2hvdyB0aGF0IHdoZW4geW91IGNvbWJpbmUgYWxsIG5vbi1VUyBjb3VudHJ5IHJlc3BvbnNlcyB0b2dldGhlciwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvcmRpbmFyeSBhbmQgc3VwZXJuYXR1cmFsIGNvbmZpZGVuY2UgcmF0aW5ncyBhcmUgc2lnbmlmaWNhbnQuIAoKYGBge3J9CiNjb21iaW5naW5nIG5vbiB1cyBjb3VudHJpZXMKbS5ub24udXMgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfY3RyeV9uYW1lL29udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkZl9leHRfdXNlbnNfY29uZiwgb250X2N0cnlfbmFtZSAhPSAiVVMiKSkKc3VtbWFyeShtLm5vbi51cykKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5ub24udXMgPC0gZW1tZWFucyhtLm5vbi51cywgfiBxdWVzdGlvbl90eXBlKQpjb250cmFzdChlbW0ubm9uLnVzLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCmBgYAoKTW9kZWwgcHJlZGljdGluZyBjb25maWRlbmNlIHggZXhpc3RlbmNlIHNjb3JlcyBieSBjYXRlZ29yeSwgYnV0IG9ubHkgZm9yIGhpZ2hlc3QgY29udHJhc3Qgb3JkaW5hcnkgdnMuIHN1cGVybmF0dXJhbCBpdGVtcyAoY29mZmVlIGN1cHMgJiB0YWJsZXMgdnMuIEdvZCAmIGRlbW9ucykuIFRoZXNlIHJlc3VsdHMgc2hvdyB0aGF0IHRoZXNlIGhpZ2hlc3QgY29udHJhc3RzIGFyZSBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBpbiB0aGUgVVMgYW5kIEdoYW5hLCBidXQgbm90IGluIEVjdWFkb3IgYW5kIFBlcnUgKGluIEVjdWFkb3IsIG91ciBzbWFsbGVzdCBzYW1wbGUgc2l6ZSwgdGhlcmUgYXJlIGhpbnRzIHRoYXQgdGhpcyBlZmZlY3QgbWlnaHQgYmUgZm91bmQgaW4gZnV0dXJlIHNpbWlsYXIgc3R1ZGllcykuIFNlZSBBcHBlbmRpeCBBIGZvciBmdWxsIGNvbmZpZGVuY2UgYW5kIGV4aXN0ZW5jZSByYXRpbmdzIGJyb2tlbiBkb3duIGJ5IGl0ZW0sIHZlcnNpb24sIGFuZCBjb3VudHJ5LiAKCmBgYHtyfQojIFVTIC0tbXVncywgdGFibGVzLCBnb2QsIGRlbW9ucwptLm11Zy51cyA8LSBsbWVyKGNvbmZfZGlyIH4gcXVlc3Rpb25fdHlwZSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGRmX2V4dF91c2Vuc19jb25mICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIiwKICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fY29kZSAlaW4lIGMoIm11ZyIsICJ0YmwiLCAiZGVtIiwgImdvZCIpKSkKc3VtbWFyeShtLm11Zy51cykKCiMgR2hhbmEgLS1tdWdzLCB0YWJsZXMsIGdvZCwgZGVtb25zCm0ubXVnLmdoYW5hIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiR2hhbmEiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbV9jb2RlICVpbiUgYygibXVnIiwgInRibCIsICJkZW0iLCAiZ29kIikpKQpzdW1tYXJ5KG0ubXVnLmdoYW5hKQoKIyBFY3VhZG9yIC0tbXVncywgdGFibGVzLCBnb2QsIFdlbmUKbS5tdWcuZWN1YWRvciA8LSBsbWVyKGNvbmZfZGlyIH4gcXVlc3Rpb25fdHlwZSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGRmX2V4dF91c2Vuc19jb25mICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIkVjdWFkb3IiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbV9jb2RlICVpbiUgYygibXVnIiwgInRibCIsICJ3ZW4iLCAiZ29kIikpKSAjV2VuZSBpbnN0ZWFkIG9mIGRlbW9uCnN1bW1hcnkobS5tdWcuZWN1YWRvcikKCiMgUGVydSAtLW11Z3MsIHRhYmxlcywgZ29kLCBPbmkgSWJvIAptLm11Zy5wZXJ1IDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiUGVydSIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtX2NvZGUgJWluJSBjKCJ0YXoiLCAidGJsIiwgIm9uaSIsICJnb2QiKSkpCnN1bW1hcnkobS5tdWcucGVydSkKYGBgCgojIEZpZ3VyZSAyICYgQWNjb21wYW55aW5nIEFuYWx5c2VzCgpgYGB7ciwgZmlnLndpZHRoPTE1fQpkYXRhX2xvbmdfY29tbSA8LSBkZiAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUgIAogICAgc2VsZWN0KG9udF9jdHJ5X25hbWUsIG9udF9zdWJqLAogICAgICAgICAgIHNjaV9jb211X2dybSwgc3BuX2NvbXVfZGVtLCBvcmRfY29tdV9tdWcsIHNjaV9jb211X2d2dCwgZmljX2NvbXVfc21uLAogICAgICAgICAgIHNjaV9jb211X2NuYywgc3BuX2NvbXVfZ29kLCBvcmRfY29tdV90YmwsIHNwbl9jb211X2docywgZmljX2NvbXVfaGFwLCAgCiAgICAgICAgICAgc2NpX2NvbXVfZ3JtLCBzcG5fY29tdV9kZW0sIG9yZF9jb211X211Zywgc2NpX2NvbXVfZnJjLCBmaWNfY29tdV9zbW4sICAKICAgICAgICAgICBzY2lfY29tdV9jbmMsIHNwbl9jb211X2dvZCwgb3JkX2NvbXVfdGJsLCBzcG5fY29tdV9hYnMsIGZpY19jb211X2t3aywgIAogICAgICAgICAgIHNjaV9jb211X2ZsdSwgc3BuX2NvbXVfd2VuLCBvcmRfY29tdV9tdWcsIHNjaV9jb211X3BhciwgZmljX2NvbXVfc3BkLCAgCiAgICAgICAgICAgc2NpX2NvbXVfY25jLCBzcG5fY29tdV9nb2QsIG9yZF9jb211X3RibCwgc3BuX2NvbXVfb2t3LCBmaWNfY29tdV9yYW0sICAKICAgICAgICAgICBzcG5fY29tdV95c2gsIHNjaV9jb211X3Bhciwgc3BuX2NvbXVfZ29kLCBvcmRfY29tdV90YmwsICAKICAgICAgICAgICBmaWNfY29tdV9uanQsIHNwbl9jb211X2NoYSwgc2NpX2NvbXVfY25jLCAgCiAgICAgICAgICAgc2NpX2NvbXVfZ3JtLCBuYXNfY29tdV9yb24sIG9yZF9jb211X3Rheiwgc3BuX2NvbXVfb25pLCAgCiAgICAgICAgICAgZmljX2NvbXVfc21uLCBuYXNfY29tdV9kbHApICU+JSAgCiAgICBtdXRhdGUoYWNyb3NzKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIGFzLm51bWVyaWMpKSAlPiUKICAgIHBpdm90X2xvbmdlcihjKC1vbnRfY3RyeV9uYW1lLCAtb250X3N1YmopLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JSAgCiAgICBtdXRhdGUocmVzcG9uc2UgPSBpZmVsc2UocmVzcG9uc2UgPT0gOTksIDAuNSwgcmVzcG9uc2UpKSAlPiUKICAgIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUgIAogICAgbXV0YXRlKGNhdGVnb3J5ID0gcmVjb2RlKHF1ZXN0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfY29tdV9ncm0gPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X2ZyYyA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X2NuYyA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X2ZsdSA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X3BhciA9ICJTY2llbnRpZmljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2NvbXVfZ3Z0ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9jb211X211ZyA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfY29tdV90YmwgPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2NvbXVfdGF6ID0gIk9yZGluYXJ5IiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X2dvZCA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbXVfZGVtID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X3dlbiA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbXVfb2t3ID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29tdV9hYnMgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X3lzaCA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbXVfY2hhID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfY29tdV9yb24gPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X29uaSA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzX2NvbXVfZGxwID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X2docyA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfY29tdV9rd2sgPSAiRmljdGlvbmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb211X3NtbiA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbXVfc3BkID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfY29tdV9yYW0gPSAiRmljdGlvbmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb211X25qdCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb211X2hhcCA9ICJGaWN0aW9uYWwiKSwgIAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IHJlY29kZShyZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDBgID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDFgID0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAwLjVgID0gIklESyIpLAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IGZhY3RvcihyZXNwb25zZV90eHQsIGxldmVscyA9IGMoIk5vIiwgIklESyIsICJZZXMiKSkpICU+JSAgCiAgICBmaWx0ZXIoIWlzLm5hKGNhdGVnb3J5KSkgIAoKICAjIENvbXB1dGUgYXZnIHBlciBjYXRlZ29yeSAgCiAgY2F0X29yZGVyIDwtIGRhdGFfbG9uZ19jb21tICU+JQogICAgZ3JvdXBfYnkoY2F0ZWdvcnkpICU+JQogICAgc3VtbWFyaXNlKG0gPSBtZWFuKHJlc3BvbnNlKSkKICAgICAKCiAgIyBNZXJnZSBhdmcgYW5kIHJlb3JkZXIgY2F0ZWdvcnkgIAogIGRhdGFfbG9uZ19jb21tIDwtIGRhdGFfbG9uZ19jb21tICU+JSAgCiAgICBsZWZ0X2pvaW4oY2F0X29yZGVyLCBieSA9ICJjYXRlZ29yeSIpICU+JSAgCiAgICBtdXRhdGUoY2F0ZWdvcnkgPSBmY3RfcmVvcmRlcihjYXRlZ29yeSwgbSkpCiAgCiAgIGNvbmZfY29sb3JzIDwtIHNldE5hbWVzKGJyZXdlci5wYWwoMywgIlJkWWxCdSIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiTm8iLCAiSURLIiwgIlllcyIpKQogIAogICMgY29uZl9jb2xvcnMgPC0gc2V0TmFtZXMoYygiIzAxNjY1ZSIsIiM1YWI0YWMiLCIjOGM1MTBhIiksIAogICMgICAgICAgICAgICAgICAgICAgICAgICAgYygiWWVzIiwgIklESyIsICJObyIpKQoKICAjIENyZWF0ZSBzdGFja2VkIGJhciBwbG90ICAKZGF0YV9sb25nX2NvbW0gJT4lCiAgbXV0YXRlKGNhdGVnb3J5ID0gZmFjdG9yKGNhdGVnb3J5LCBsZXZlbHMgPSBjKCJPcmRpbmFyeSIsICJTY2llbnRpZmljIiwgIlN1cGVybmF0dXJhbCIsICJGaWN0aW9uYWwiKSksIAogICAgICAgICBvbnRfY3RyeV9uYW1lID0gZmFjdG9yKG9udF9jdHJ5X25hbWUsIGxldmVscyA9IGxldmVsc19jb3VudHJ5KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2F0ZWdvcnksIGZpbGwgPSByZXNwb25zZV90eHQpKSArICAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyAgIyBTdGFja2VkIHByb3BvcnRpb25zCiAgIyBnZW9tX3RleHQoc3RhdCA9ICJjb3VudCIsIGFlcyhsYWJlbCA9IGFmdGVyX3N0YXQoY291bnQpKSwgICAKICAjICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ZpbGwodmp1c3QgPSAwLjUpLCAgIAogICMgICAgICAgICAgIHNpemUgPSA2LCBjb2xvciA9ICJ3aGl0ZSIpICsgIAogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29uZl9jb2xvcnMsIGRyb3AgPSBGQUxTRSkgKyAKICB0aGVtZV9idygpICsgIAogIGxhYnMoCiAgICB4ID0gIkNhdGVnb3J5IG9mIE9iamVjdHMiLCAgCiAgICB5ID0gIlByb3BvcnRpb24gb2YgUmVzcG9uc2VzIiwgIAogICAgZmlsbCA9ICJSZXNwb25zZXMiLCAgCiAgICB0aXRsZSA9ICJDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IGJ5IENhdGVnb3J5IGFuZCBGaWVsZCBTaXRlIgogICkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSwgYW5nbGUgPSAtMzUsIHZqdXN0ID0gMSwgaGp1c3QgPSAwKSwKICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLAogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI1KSwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksIAogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksIAogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0xOCkpICsKICBmYWNldF93cmFwKH4gb250X2N0cnlfbmFtZSwgbmNvbCA9IDQpICAgIyBTZXBhcmF0ZSBwbG90cyBmb3IgZWFjaCBjb3VudHJ5CgoKYGBgCgpNb2RlbHMgcHJlZGljdGluZyAiQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIFg/IiByZXNwb25zZXMgYnkgY2F0ZWdvcnkuIFRoZSBwYWlyd2lzZSBjb250cmFzdHMgZnJvbSB0aGVzZSBtb2RlbHMgYXJlIHJlcG9ydGVkIGluIHRoZSBtYW51c2NyaXB0IHVuZGVyIHRoZSBzZWN0aW9uICJBZGRpdGlvbmFsIFF1ZXN0aW9ucyBSZWZsZWN0IERpZmZlcmVuY2VzIGluIEVwaXN0ZW1pYyBGcmFtZXMiCgpgYGB7cn0KIyBJIHdhbnQgMSByZWdyZXNzaW9uIHBlciBjb3VudHJ5ICg0IHRvdGFsKSB3aGVyZSByZXNwb25zZSBpcyBwcmVkaWN0ZWQgYnkgY2F0ZWdvcnkKCiMgVVMKbS5jb21tLnVzIDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfY29tbSwgb250X2N0cnlfbmFtZSA9PSAiVVMiKSkKc3VtbWFyeShtLmNvbW0udXMpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0uY29tbS51cyA8LSBlbW1lYW5zKG0uY29tbS51cywgfiBjYXRlZ29yeSkKY29udHJhc3QoZW1tLmNvbW0udXMsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgR2hhbmEKbS5jb21tLmdoYW5hIDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfY29tbSwgb250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSkKc3VtbWFyeShtLmNvbW0uZ2hhbmEpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0uY29tbS5naGFuYSA8LSBlbW1lYW5zKG0uY29tbS5naGFuYSwgfiBjYXRlZ29yeSkKY29udHJhc3QoZW1tLmNvbW0uZ2hhbmEsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgRWN1YWRvcgptLmNvbW0uZWN1YWRvciA8LSBsbWVyKHJlc3BvbnNlIH4gY2F0ZWdvcnkgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGF0YV9sb25nX2NvbW0sIG9udF9jdHJ5X25hbWUgPT0gIkVjdWFkb3IiKSkKc3VtbWFyeShtLmNvbW0uZWN1YWRvcikKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5jb21tLmVjdWFkb3IgPC0gZW1tZWFucyhtLmNvbW0uZWN1YWRvciwgfiBjYXRlZ29yeSkKY29udHJhc3QoZW1tLmNvbW0uZWN1YWRvciwgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKIyBQZXJ1Cm0uY29tbS5wZXJ1IDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfY29tbSwgb250X2N0cnlfbmFtZSA9PSAiUGVydSIpKQpzdW1tYXJ5KG0uY29tbS5wZXJ1KQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmNvbW0ucGVydSA8LSBlbW1lYW5zKG0uY29tbS5wZXJ1LCB+IGNhdGVnb3J5KQpjb250cmFzdChlbW0uY29tbS5wZXJ1LCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCmBgYAoKIyBGaWd1cmUgMyAmIEFjY29tcGFueWluZyBBbmFseXNlcwoKYGBge3IsIGZpZy53aWR0aD0xNX0KZGF0YV9sb25nX3NwZWMgPC0gZGYgJT4lCiAgZmlsdGVyKG9udF9jdHJ5X25hbWUgJWluJSBjKCJVUyIsICJFY3VhZG9yIiwgIlBlcnUiKSkgJT4lICAjcXVlc3Rpb24gd2Fzbid0IGFza2VkIGluIGdoYW5hCiAgICBzZWxlY3Qob250X2N0cnlfbmFtZSwgb250X3N1YmosCiAgICAgICAgICAgc2NpX3NwZXhwX2dybSwgc3BuX3NwZXhwX2RlbSwgb3JkX3NwZXhwX211Zywgc2NpX3NwZXhwX2d2dCwgZmljX3NwZXhwX3NtbiwKICAgICAgICAgICBzY2lfc3BleHBfY25jLCBzcG5fc3BleHBfZ29kLCBvcmRfc3BleHBfdGJsLCBzcG5fc3BleHBfZ2hzLCBmaWNfc3BleHBfaGFwLCAgCiAgICAgICAgICAgIyBzY2lfc3BleHBfZ3JtLCBzcG5fc3BleHBfZGVtLCBvcmRfc3BleHBfbXVnLCBzY2lfc3BleHBfZnJjLCBmaWNfc3BleHBfc21uLCAgCiAgICAgICAgICAgIyBzY2lfc3BleHBfY25jLCBzcG5fc3BleHBfZ29kLCBvcmRfc3BleHBfdGJsLCBzcG5fc3BleHBfYWJzLCBmaWNfc3BleHBfa3drLCAgCiAgICAgICAgICAgc2NpX3NwZXhwX2ZsdSwgc3BuX3NwZXhwX3dlbiwgb3JkX3NwZXhwX211Zywgc2NpX3NwZXhwX3BhciwgZmljX3NwZXhwX3NwZCwgIAogICAgICAgICAgIHNjaV9zcGV4cF9jbmMsIHNwbl9zcGV4cF9nb2QsIG9yZF9zcGV4cF90YmwsIHNwbl9zcGV4cF9va3csIGZpY19zcGV4cF9yYW0sICAKICAgICAgICAgICBzcG5fc3BleHBfeXNoLCBzY2lfc3BleHBfcGFyLCBzcG5fc3BleHBfZ29kLCBvcmRfc3BleHBfdGJsLCAgCiAgICAgICAgICAgZmljX3NwZXhwX25qdCwgc3BuX3NwZXhwX2NoYSwgc2NpX3NwZXhwX2NuYywgIAogICAgICAgICAgIHNjaV9zcGV4cF9ncm0sIG5hc19zcGV4cF9yb24sIG9yZF9zcGV4cF90YXosIHNwbl9zcGV4cF9vbmksICAKICAgICAgICAgICBmaWNfc3BleHBfc21uLCBuYXNfc3BleHBfZGxwKSAlPiUgIAogICAgbXV0YXRlKGFjcm9zcyhjKC1vbnRfY3RyeV9uYW1lLCAtb250X3N1YmopLCBhcy5udW1lcmljKSkgJT4lCiAgICBwaXZvdF9sb25nZXIoYygtb250X2N0cnlfbmFtZSwgLW9udF9zdWJqKSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUgIAogICAgbXV0YXRlKHJlc3BvbnNlID0gaWZlbHNlKHJlc3BvbnNlID09IDk5LCAwLjUsIHJlc3BvbnNlKSkgJT4lCiAgICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lICAKICAgIG11dGF0ZShjYXRlZ29yeSA9IHJlY29kZShxdWVzdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX2dybSA9ICJTY2llbnRpZmljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX2ZyYyA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9zcGV4cF9jbmMgPSAiU2NpZW50aWZpYyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfc3BleHBfZmx1ID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX3BhciA9ICJTY2llbnRpZmljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX2d2dCA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfc3BleHBfbXVnID0gIk9yZGluYXJ5IiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9zcGV4cF90YmwgPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX3NwZXhwX3RheiA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fc3BleHBfZ29kID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fc3BleHBfZGVtID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF93ZW4gPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9va3cgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9hYnMgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF95c2ggPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9jaGEgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc19zcGV4cF9yb24gPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9vbmkgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc19zcGV4cF9kbHAgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX3NwZXhwX2docyA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfa3drID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfc21uID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfc3BkID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfcmFtID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfbmp0ID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX3NwZXhwX2hhcCA9ICJGaWN0aW9uYWwiKSwgIAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IHJlY29kZShyZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDBgID0gIkFueW9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAxYCA9ICJPbmx5IHNwZWNpZmljIHBlb3BsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAwLjVgID0gIklESyIpLAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IGZhY3RvcihyZXNwb25zZV90eHQsIGxldmVscyA9IGMoIkFueW9uZSIsICJJREsiLCAiT25seSBzcGVjaWZpYyBwZW9wbGUiKSkpICU+JSAgCiAgICBmaWx0ZXIoIWlzLm5hKGNhdGVnb3J5KSkgIAoKICAjIENvbXB1dGUgYXZnIHBlciBjYXRlZ29yeSAgCiAgY2F0X29yZGVyIDwtIGRhdGFfbG9uZ19zcGVjICU+JQogICAgZ3JvdXBfYnkoY2F0ZWdvcnkpICU+JQogICAgc3VtbWFyaXNlKG0gPSBtZWFuKHJlc3BvbnNlKSkKICAgICAKCiAgIyBNZXJnZSBhdmcgYW5kIHJlb3JkZXIgY2F0ZWdvcnkgIAogIGRhdGFfbG9uZ19zcGVjIDwtIGRhdGFfbG9uZ19zcGVjICU+JSAgCiAgICBsZWZ0X2pvaW4oY2F0X29yZGVyLCBieSA9ICJjYXRlZ29yeSIpICU+JSAgCiAgICBtdXRhdGUoY2F0ZWdvcnkgPSBmY3RfcmVvcmRlcihjYXRlZ29yeSwgbSkpCiAgCiAgY29uZl9jb2xvcnMgPC0gc2V0TmFtZXMoYnJld2VyLnBhbCgzLCAiUmRZbEJ1IiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJBbnlvbmUiLCAiSURLIiwgIk9ubHkgc3BlY2lmaWMgcGVvcGxlIikpCiAgCiAgIyBjb25mX2NvbG9ycyA8LSBzZXROYW1lcyhicmV3ZXIucGFsKDMsICJTZXQyIiksIAogICMgICAgICAgICAgICAgICAgICAgICAgICAgYygiQW55b25lIiwgIklESyIsICJPbmx5IHNwZWNpZmljIHBlb3BsZSIpKQoKICAjIENyZWF0ZSBzdGFja2VkIGJhciBwbG90ICAKZGF0YV9sb25nX3NwZWMgJT4lCiAgbXV0YXRlKGNhdGVnb3J5ID0gZmFjdG9yKGNhdGVnb3J5LCBsZXZlbHMgPSBjKCJPcmRpbmFyeSIsICJTY2llbnRpZmljIiwgIlN1cGVybmF0dXJhbCIsICJGaWN0aW9uYWwiKSksIAogICAgICAgICBvbnRfY3RyeV9uYW1lID0gZmFjdG9yKG9udF9jdHJ5X25hbWUsIGxldmVscyA9IGxldmVsc19jb3VudHJ5KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2F0ZWdvcnksIGZpbGwgPSByZXNwb25zZV90eHQpKSArICAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyAgIyBTdGFja2VkIHByb3BvcnRpb25zCiAgIyBnZW9tX3RleHQoc3RhdCA9ICJjb3VudCIsIGFlcyhsYWJlbCA9IGFmdGVyX3N0YXQoY291bnQpKSwgICAKICAjICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ZpbGwodmp1c3QgPSAwLjUpLCAgIAogICMgICAgICAgICAgIHNpemUgPSA2LCBjb2xvciA9ICJ3aGl0ZSIpICsgIAogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29uZl9jb2xvcnMsIGRyb3AgPSBGQUxTRSkgKyAKICB0aGVtZV9idygpICsgIAogIGxhYnMoCiAgICB4ID0gIkNhdGVnb3J5IG9mIE9iamVjdHMiLCAgCiAgICB5ID0gIlByb3BvcnRpb24gb2YgUmVzcG9uc2VzIiwgIAogICAgZmlsbCA9ICJSZXNwb25zZXMiLCAgCiAgICB0aXRsZSA9ICJDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlP1xuYnkgQ2F0ZWdvcnkgYW5kIEZpZWxkIFNpdGUiCiAgKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1LCBhbmdsZSA9IC0zNSwgdmp1c3QgPSAxLCBoanVzdCA9IDApLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjUpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPTE4KSkgKwogIGZhY2V0X3dyYXAofiBvbnRfY3RyeV9uYW1lLCBuY29sID0gNCkgICMgU2VwYXJhdGUgcGxvdHMgZm9yIGVhY2ggY291bnRyeQpgYGAKCk1vZGVscyBwcmVkaWN0aW5nICJDYW4gWCBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IiByZXNwb25zZXMgYnkgY2F0ZWdvcnkuIFRoZSBwYWlyd2lzZSBjb250cmFzdHMgZnJvbSB0aGVzZSBtb2RlbHMgYXJlIHJlcG9ydGVkIGluIHRoZSBtYW51c2NyaXB0IHVuZGVyIHRoZSBzZWN0aW9uICJBZGRpdGlvbmFsIFF1ZXN0aW9ucyBSZWZsZWN0IERpZmZlcmVuY2VzIGluIEVwaXN0ZW1pYyBGcmFtZXMiCgpgYGB7cn0KIyAxIHJlZ3Jlc3Npb24gcGVyIGNvdW50cnkgKDQgdG90YWwpIHdoZXJlIHJlc3BvbnNlIGlzIHByZWRpY3RlZCBieSBjYXRlZ29yeQoKIyBVUwptLnNwZWMudXMgPC0gbG1lcihyZXNwb25zZSB+IGNhdGVnb3J5ICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRhdGFfbG9uZ19zcGVjLCBvbnRfY3RyeV9uYW1lID09ICJVUyIpKQpzdW1tYXJ5KG0uc3BlYy51cykKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5zcGVjLnVzIDwtIGVtbWVhbnMobS5zcGVjLnVzLCB+IGNhdGVnb3J5KQpjb250cmFzdChlbW0uc3BlYy51cywgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKIyBFY3VhZG9yCm0uc3BlYy5lY3VhZG9yIDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfc3BlYywgb250X2N0cnlfbmFtZSA9PSAiRWN1YWRvciIpKQpzdW1tYXJ5KG0uc3BlYy5lY3VhZG9yKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLnNwZWMuZWN1YWRvciA8LSBlbW1lYW5zKG0uc3BlYy5lY3VhZG9yLCB+IGNhdGVnb3J5KQpjb250cmFzdChlbW0uc3BlYy5lY3VhZG9yLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCgojIFBlcnUKbS5zcGVjLnBlcnUgPC0gbG1lcihyZXNwb25zZSB+IGNhdGVnb3J5ICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRhdGFfbG9uZ19zcGVjLCBvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikpCnN1bW1hcnkobS5zcGVjLnBlcnUpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0uc3BlYy5wZXJ1IDwtIGVtbWVhbnMobS5zcGVjLnBlcnUsIH4gY2F0ZWdvcnkpCmNvbnRyYXN0KGVtbS5zcGVjLnBlcnUsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCmBgYAoKIyBGaWd1cmUgNCAKCkNhbiBfXyBiZSBzZW5zZWQ/IFRoaXMgY29tYmluZXMgYWNyb3NzIGFsbCBzZW5zb3J5IHF1ZXN0aW9ucyBmb3IgZWFjaCBpdGVtLiBUaGUgaXRlbXMgZGlmZmVyZWQgZnJvbSBjb3VudHJ5IHRvIGNvdW50cnkgYW5kIHZlcnNpb24gdG8gdmVyc2lvbi4gQnV0IGFsbW9zdCBhbGwgY29udGFpbiB0aGUgcXVlc3Rpb25zOiBzZWUsIGhlYXIsIHNtZWxsLCB0b3VjaCwgZmVlbC4gTWFueSBidXQgbm90IGFsbCBhbHNvIGhhZCBhIHRhc3RlIHF1ZXN0aW9uLiAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CiMgQ29tYmluZSBhbGwgY291bnRyeSBkYXRhCmNvbWJpbmVkX3NlbnMgPC0gZGZfc2VucyAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUKICBzZWxlY3Qob250X2N0cnlfbmFtZSwgCiAgICAgICAgIHNlbnNfZ3JtLCBzZW5zX2RlbSwgc2Vuc19tdWcsIHNlbnNfZnJjLCBzZW5zX3NtbiwKICAgICAgICAgc2Vuc19jbmMsIHNlbnNfZ29kLCBzZW5zX3RibCwgc2Vuc19hYnMsIHNlbnNfa3drLAogICAgICAgICBzZW5zX2ZsdSwgc2Vuc193ZW4sIHNlbnNfcGFyLCBzZW5zX3NwZCwgc2Vuc19va3csIHNlbnNfcmFtLCAKICAgICAgICAgc2Vuc195c2gsIHNlbnNfbmp0LCBzZW5zX2NoYSwgc2Vuc19yb24sIHNlbnNfdGF6LCBzZW5zX29uaSwgc2Vuc19kbHAKICAgICAgICAgKSAlPiUKICBtdXRhdGUoYWNyb3NzKC1vbnRfY3RyeV9uYW1lLCBhcy5udW1lcmljKSkgJT4lCiAgcGl2b3RfbG9uZ2VyKC1vbnRfY3RyeV9uYW1lLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2ZyYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZmx1ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19tdWcgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfdGF6ID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19nb2QgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19kZW0gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc193ZW4gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19va3cgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19hYnMgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc195c2ggPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19jaGEgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19yb24gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19vbmkgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZGxwID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfa3drID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc21uID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc3BkID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcmFtID0gIkZpY3Rpb25hbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX25qdCA9ICJGaWN0aW9uYWwiKSwgCiAgICBxdWVzdGlvbl90eXBlID0gZmFjdG9yKHF1ZXN0aW9uX3R5cGUsIGxldmVscyA9IGxldmVsc190eXBlKSwgCiAgICBvbnRfY3RyeV9uYW1lID0gZmFjdG9yKG9udF9jdHJ5X25hbWUsIGxldmVscyA9IGxldmVsc19jb3VudHJ5KQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KG9udF9jdHJ5X25hbWUsIHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkKCiMgQ2FsY3VsYXRlIG92ZXJhbGwgcHJvcG9ydGlvbnMgZm9yIHNvcnRpbmcKb3ZlcmFsbF9vcmRlciA8LSBjb21iaW5lZF9zZW5zICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZShvdmVyYWxsX3Byb3BvcnRpb24gPSBzdW0oeWVzX2NvdW50KSAvIHN1bSh0b3RhbF9jb3VudCkpICU+JQogIGFycmFuZ2UoZGVzYyhvdmVyYWxsX3Byb3BvcnRpb24pKQoKIyBSZW9yZGVyIGNvbWJpbmVkIGRhdGEgYnkgb3ZlcmFsbCBwcm9wb3J0aW9uCmNvbWJpbmVkX3NlbnMgPC0gY29tYmluZWRfc2VucyAlPiUKICBtdXRhdGUocXVlc3Rpb25fdHlwZSA9IGZhY3RvcihxdWVzdGlvbl90eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBvdmVyYWxsX29yZGVyJHF1ZXN0aW9uX3R5cGUpKQoKCiMgUGxvdCB3aXRoIHJlb3JkZXJlZCBiYXJzIC0tIHggYXhpcyBpcyBjb3VudHJ5CmNvbWJpbmVkX3NlbnMgJT4lCiAgZ2dwbG90KGFlcyh4ID0gb250X2N0cnlfbmFtZSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC44KSwgd2lkdGggPSAwLjcpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIiwgbmFtZSA9ICJRdWVzdGlvbiBUeXBlIikgKwogIHRoZW1lX2J3KCkgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC44KSwgdmp1c3QgPSAyLCBzaXplID0gNCkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJDYW4gX18gYmUgc2Vuc2VkPzogUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgRmllbGQgU2l0ZSIsCiAgICB4ID0gIkZpZWxkIFNpdGUiLAogICAgeSA9ICJDb2xsYXRlZCAnWWVzJyBSZXNwb25zZXMgdG8gU2Vuc2UgUXVlc3Rpb25zIgogICkgKyAKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjMpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE3KSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPTE4KSkKYGBgCgoKIyBGaWd1cmUgNSAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CiMgQ29tYmluZSBhbGwgY291bnRyeSBkYXRhCmNvbWJpbmVkX3VzZW5zIDwtIGRmX3VzZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lICVpbiUgYygiVVMiLCAiR2hhbmEiLCAiRWN1YWRvciIsICJQZXJ1IikpICU+JQogIHNlbGVjdChvbnRfY3RyeV9uYW1lLCAKICAgICAgICAgdXNlbnNfZ3JtLCB1c2Vuc19kZW0sIHVzZW5zX211ZywgdXNlbnNfZnJjLCB1c2Vuc19zbW4sCiAgICAgICAgIHVzZW5zX2NuYywgdXNlbnNfZ29kLCB1c2Vuc190YmwsIHVzZW5zX2FicywgdXNlbnNfa3drLAogICAgICAgICB1c2Vuc19mbHUsIHVzZW5zX3dlbiwgdXNlbnNfcGFyLCB1c2Vuc19zcGQsIHVzZW5zX29rdywgdXNlbnNfcmFtLCAKICAgICAgICAgdXNlbnNfeXNoLCB1c2Vuc19uanQsIHVzZW5zX2NoYSwgdXNlbnNfcm9uLCB1c2Vuc190YXosIHVzZW5zX29uaSwgdXNlbnNfZGxwCiAgICAgICAgICkgJT4lCiAgbXV0YXRlKGFjcm9zcygtb250X2N0cnlfbmFtZSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcigtb250X2N0cnlfbmFtZSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUKICBtdXRhdGUoCiAgICBxdWVzdGlvbl90eXBlID0gcmVjb2RlKHF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2ZyYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19mbHUgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfdGJsID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfdGF6ID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc193ZW4gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2FicyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc195c2ggPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3JvbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19vbmkgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19rd2sgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfc21uID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19yYW0gPSAiRmljdGlvbmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX25qdCA9ICJGaWN0aW9uYWwiKSwKICAgIHF1ZXN0aW9uX3R5cGUgPSBmYWN0b3IocXVlc3Rpb25fdHlwZSwgbGV2ZWxzID0gbGV2ZWxzX3R5cGUpLCAKICAgIG9udF9jdHJ5X25hbWUgPSBmYWN0b3Iob250X2N0cnlfbmFtZSwgbGV2ZWxzID0gbGV2ZWxzX2NvdW50cnkpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkob250X2N0cnlfbmFtZSwgcXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKQoKIyBDYWxjdWxhdGUgb3ZlcmFsbCBwcm9wb3J0aW9ucyBmb3Igc29ydGluZwpvdmVyYWxsX29yZGVyIDwtIGNvbWJpbmVkX3VzZW5zICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZShvdmVyYWxsX3Byb3BvcnRpb24gPSBzdW0oeWVzX2NvdW50KSAvIHN1bSh0b3RhbF9jb3VudCkpICU+JQogIGFycmFuZ2UoZGVzYyhvdmVyYWxsX3Byb3BvcnRpb24pKQoKIyBSZW9yZGVyIGNvbWJpbmVkIGRhdGEgYnkgb3ZlcmFsbCBwcm9wb3J0aW9uCmNvbWJpbmVkX3VzZW5zIDwtIGNvbWJpbmVkX3VzZW5zICU+JQogIG11dGF0ZShxdWVzdGlvbl90eXBlID0gZmFjdG9yKHF1ZXN0aW9uX3R5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IG92ZXJhbGxfb3JkZXIkcXVlc3Rpb25fdHlwZSkpCgoKIyBQbG90IHdpdGggcmVvcmRlcmVkIGJhcnMgLS0geCBheGlzIGlzIGNvdW50cnkgCmNvbWJpbmVkX3VzZW5zICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSBmYWN0b3IocXVlc3Rpb25fdHlwZSwgbGV2ZWxzID0gbGV2ZWxzX3R5cGUpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBvbnRfY3RyeV9uYW1lLCB5ID0gcHJvcG9ydGlvbl95ZXMsIGZpbGwgPSBxdWVzdGlvbl90eXBlKSkgKwogIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjgpLCB3aWR0aCA9IDAuNykgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiLCBuYW1lID0gIlF1ZXN0aW9uIFR5cGUiKSArCiAgdGhlbWVfYncoKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChwcm9wb3J0aW9uX3llcywgYWNjdXJhY3kgPSAxKSksCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjgpLCB2anVzdCA9IDIsIHNpemUgPSA0KSArCiAgbGFicygKICAgIHRpdGxlID0gIkhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPzogUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgRmllbGQgU2l0ZSIsCiAgICB4ID0gIkZpZWxkIFNpdGUiLAogICAgeSA9ICJDb2xsYXRlZCAnWWVzJyBSZXNwb25zZXMgdG8gU2Vuc2UgUXVlc3Rpb25zIgogICkgKyAKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjMpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE3KSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPTE4KSkKCmBgYAoKCiMgVGFibGUgMyAmIEFjY29tcGFueWluZyBBbmFseXNlcwoKTW9kZWxzIHByZWRpY3RpbmcgY29uZmlkZW5jZSB4IGV4aXN0ZW5jZSBzY29yZXMgd2l0aCBjb25zZW5zdXMgYW5kIHNlbnNvcnkgZXhwZXJpZW5jZSBzY29yZXMuIFRoZSByZXN1bHRzIGFyZSByZXBvcnRlZCBpbiBUYWJsZSAzIGluIHRoZSBtYW51c2NyaXB0CgpgYGB7cn0KIyBmb3IgbW9yZSBkZXRhaWxzIG9uIGNvbnNlbnN1cyBzY29yZSBjYWxjdWxhdGlvbiwgc2VlIHRoZSBkYXRhIGZyYW1lIHdoZXJlIGl0IGlzIGNyZWF0ZWQgaW4gRGF0YSBXcmFuZ2xpbmcgCgptLmNvbmYgPC0gbG1lcihjb25mX2RpciB+IGNvbnNlbnN1c19leGNsX3NlbGYgKyB1c2Vuc19yZXNwb25zZSArICgxIHwgb250X2N0cnlfbmFtZS9vbnRfc3ViaiksIAogICAgICAgICAgICAgIGRhdGEgPSBkZl9leHRfdXNlbnNfY29uZikKc3VtbWFyeShtLmNvbmYpCgojIG1ha2luZyBUYWJsZSAzCm0uY29uZiAlPiUgCiAgICB0YmxfcmVncmVzc2lvbihpbnRlcmNlcHQgPSBUUlVFKSAlPiUgCiAgICBhc19ndCgpICU+JSAKICAgIGd0Ojp0YWJfaGVhZGVyKHRpdGxlID0gIlJlZ3Jlc3Npb24gUmVzdWx0czogRWZmZWN0cyBvZiBDb25zZW5zdXMgYW5kIFNlbnNvcnkgRXZpZGVuY2Ugb24gQ29uZmlkZW5jZSIpCmBgYAoKCiMgQUxURVJOQVRFIENPRElORyAmIEZJRyAxIGV0IGFsCgpgYGB7cn0KZGZfZXh0X3VzZW5zX2NvbmZfQUxUIDwtIGRmX2V4dF91c2Vuc19jb25mICU+JSAKICBtdXRhdGUoZXh0X2RpciA9IGNhc2Vfd2hlbigKICAgIHJlc3BvbnNlID09IDEgfiAxLAogICAgcmVzcG9uc2UgPT0gMCB+IC0xLAogICAgcmVzcG9uc2UgPT0gMC41IH4gMCwKICAgIFRSVUUgfiByZXNwb25zZSksIAogICAgZXh0X2xhYmVsID0gY2FzZV93aGVuKAogICAgICBleHRfZGlyID09IDEgfiAiZXhpc3QiLAogICAgICBleHRfZGlyID09IC0xIH4gIm5vdCIsIAogICAgICBleHRfZGlyID09IDAgfiAidW5zdXJlIiksCiAgICBjb25mX2RpciA9IGNhc2Vfd2hlbigKICAgICAgZXh0X2xhYmVsID09ICJleGlzdCIgfiBleHRfZGlyICsgY29uZl9yZXNwb25zZSwKICAgICAgZXh0X2xhYmVsID09ICJub3QiIH4gZXh0X2RpciAtIGNvbmZfcmVzcG9uc2UsCiAgICAgIGV4dF9sYWJlbCA9PSAidW5zdXJlIiB+IDApLAogICAgY29uZl9kaXJfdGV4dCA9IGNhc2Vfd2hlbigKICAgICAgY29uZl9kaXIgPT0gLTQgfiAiVmVyeSBzdXJlIGRvZXNuJ3QgZXhpc3QiLAogICAgICBjb25mX2RpciA9PSAtMyB+ICJQcmV0dHkgc3VyZSBkb2Vzbid0IGV4aXN0IiwKICAgICAgY29uZl9kaXIgPT0gLTIgfiAiU29tZXdoYXQgc3VyZSBkb2Vzbid0IGV4aXN0IiwKICAgICAgY29uZl9kaXIgPT0gLTEgfiAiTm90IHN1cmUgZG9lc24ndCBleGlzdCIsCiAgICAgIGNvbmZfZGlyID09IDAgfiAiTm90IHN1cmUiLAogICAgICBjb25mX2RpciA9PSAxIH4gIk5vdCBzdXJlIGV4aXN0cyIsCiAgICAgIGNvbmZfZGlyID09IDIgfiAiU29tZXdoYXQgc3VyZSBleGlzdHMiLAogICAgICBjb25mX2RpciA9PSAzIH4gIlByZXR0eSBzdXJlIGV4aXN0cyIsCiAgICAgIGNvbmZfZGlyID09IDQgfiAiVmVyeSBzdXJlIGV4aXN0cyIpLCAKICAgIGNvbmZfZGlyX3RleHQgPSBmYWN0b3IoY29uZl9kaXJfdGV4dCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlZlcnkgc3VyZSBkb2Vzbid0IGV4aXN0IiwgIlByZXR0eSBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiU29tZXdoYXQgc3VyZSBkb2Vzbid0IGV4aXN0IiwgIk5vdCBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiTm90IHN1cmUiLCAiTm90IHN1cmUgZXhpc3RzIiwgIlNvbWV3aGF0IHN1cmUgZXhpc3RzIiwgIlByZXR0eSBzdXJlIGV4aXN0cyIsICJWZXJ5IHN1cmUgZXhpc3RzIikpCiAgKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTV9CmNvbmZfY29sb3JzIDwtIChSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwoOSwgIlJkWWxCdSIpKQoKIyBDcmVhdGUgc3RhY2tlZCBiYXIgcGxvdCAgCmRmX2V4dF91c2Vuc19jb25mX0FMVCAlPiUgCiAgZmlsdGVyKCFpcy5uYShjb25mX2Rpcl90ZXh0KSwgIWlzLm5hKGNhdGVnb3J5KSkgJT4lIAogIG11dGF0ZShjYXRlZ29yeSA9IGZhY3RvcihjYXRlZ29yeSwgbGV2ZWxzID0gYygiT3JkaW5hcnkiLCAiU2NpZW50aWZpYyIsICJTdXBlcm5hdHVyYWwiLCAiRmljdGlvbmFsIikpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXRlZ29yeSwgZmlsbCA9IGNvbmZfZGlyX3RleHQpKSArICAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyAgIyBTdGFja2VkIHByb3BvcnRpb25zCiAgIyBnZW9tX3RleHQoc3RhdCA9ICJjb3VudCIsIGFlcyhsYWJlbCA9IGFmdGVyX3N0YXQoY291bnQpKSwgICAKICAjICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ZpbGwodmp1c3QgPSAwLjUpLCAgIAogICMgICAgICAgICAgIHNpemUgPSA2LCBjb2xvciA9ICJ3aGl0ZSIpICsgIAogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29uZl9jb2xvcnMsIGRyb3AgPSBGQUxTRSkgKyAKICB0aGVtZV9idygpICsgIAogIGxhYnMoCiAgICB4ID0gIkNhdGVnb3J5IG9mIE9iamVjdHMiLCAgCiAgICB5ID0gIlByb3BvcnRpb24gb2YgUmVzcG9uc2VzIiwgIAogICAgZmlsbCA9ICJDb25maWRlbmNlIHggRXhpc3RlbmNlIiwgIAogICAgdGl0bGUgPSAiQ29uZmlkZW5jZSB4IEV4aXN0ZW5jZSBieSBDYXRlZ29yeSBhbmQgQ291bnRyeSIKICApICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUsIGFuZ2xlID0gLTM1LCB2anVzdCA9IDEsIGhqdXN0ID0gMCksCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwKICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNSksIAogICAgICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLCAKICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCAKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9MTgpKSArCiAgZmFjZXRfd3JhcCh+IG9udF9jdHJ5X25hbWUsIG5jb2wgPSA0KSAgICMgU2VwYXJhdGUgcGxvdHMgZm9yIGVhY2ggY291bnRyeQpgYGAKCmBgYHtyfQojIDEgcmVncmVzc2lvbiBwZXIgY291bnRyeSAoNCB0b3RhbCkgd2hlcmUgcmVzcG9uc2UgaXMgcHJlZGljdGVkIGJ5IGNhdGVnb3J5CgojIFVTCm0udXMgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lID09ICJVUyIpKQpzdW1tYXJ5KG0udXMpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0udXMgPC0gZW1tZWFucyhtLnVzLCB+IHF1ZXN0aW9uX3R5cGUpCmNvbnRyYXN0KGVtbS51cywgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKIyBHaGFuYQptLmdoYW5hIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRmX2V4dF91c2Vuc19jb25mX0FMVCwgb250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSkKc3VtbWFyeShtLmdoYW5hKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmdoYW5hIDwtIGVtbWVhbnMobS5naGFuYSwgfiBxdWVzdGlvbl90eXBlKQpjb250cmFzdChlbW0uZ2hhbmEsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgRWN1YWRvcgptLmVjdWFkb3IgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikpCnN1bW1hcnkobS5lY3VhZG9yKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmVjdWFkb3IgPC0gZW1tZWFucyhtLmVjdWFkb3IsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLmVjdWFkb3IsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgUGVydQptLnBlcnUgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikpCnN1bW1hcnkobS5wZXJ1KQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLnBlcnUgPC0gZW1tZWFucyhtLnBlcnUsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLnBlcnUsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCmBgYAoKTW9kZWwgcHJlZGljdGluZyBjb25maWRlbmNlIHggZXhpc3RlbmNlIHNjb3JlcyBieSBjYXRlZ29yeSBwb29saW5nIGFjcm9zcyBub24tVVMgY291bnRyaWVzLiBUaGVzZSByZXN1bHRzIHNob3cgdGhhdCB3aGVuIHlvdSBjb21iaW5lIGFsbCBub24tVVMgY291bnRyeSByZXNwb25zZXMgdG9nZXRoZXIsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb3JkaW5hcnkgYW5kIHN1cGVybmF0dXJhbCBjb25maWRlbmNlIHJhdGluZ3MgYXJlIHNpZ25pZmljYW50LiAKCmBgYHtyfQojY29tYmluZ2luZyBub24gdXMgY291bnRyaWVzCm0ubm9uLnVzIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X2N0cnlfbmFtZS9vbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lICE9ICJVUyIpKQpzdW1tYXJ5KG0ubm9uLnVzKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLm5vbi51cyA8LSBlbW1lYW5zKG0ubm9uLnVzLCB+IHF1ZXN0aW9uX3R5cGUpCmNvbnRyYXN0KGVtbS5ub24udXMsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKYGBgCgpNb2RlbCBwcmVkaWN0aW5nIGNvbmZpZGVuY2UgeCBleGlzdGVuY2Ugc2NvcmVzIGJ5IGNhdGVnb3J5LCBidXQgb25seSBmb3IgaGlnaGVzdCBjb250cmFzdCBvcmRpbmFyeSB2cy4gc3VwZXJuYXR1cmFsIGl0ZW1zIChjb2ZmZWUgY3VwcyAmIHRhYmxlcyB2cy4gR29kICYgZGVtb25zKS4gVGhlc2UgcmVzdWx0cyBzaG93IHRoYXQgdGhlc2UgaGlnaGVzdCBjb250cmFzdHMgYXJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGluIHRoZSBVUyBhbmQgR2hhbmEsIGJ1dCBub3QgaW4gRWN1YWRvciBhbmQgUGVydSAoaW4gRWN1YWRvciwgb3VyIHNtYWxsZXN0IHNhbXBsZSBzaXplLCB0aGVyZSBhcmUgaGludHMgdGhhdCB0aGlzIGVmZmVjdCBtaWdodCBiZSBmb3VuZCBpbiBmdXR1cmUgc2ltaWxhciBzdHVkaWVzKS4gU2VlIEFwcGVuZGl4IEEgZm9yIGZ1bGwgY29uZmlkZW5jZSBhbmQgZXhpc3RlbmNlIHJhdGluZ3MgYnJva2VuIGRvd24gYnkgaXRlbSwgdmVyc2lvbiwgYW5kIGNvdW50cnkuIAoKYGBge3J9CiMgVVMgLS1tdWdzLCB0YWJsZXMsIGdvZCwgZGVtb25zCm0ubXVnLnVzIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmZfQUxUICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIiwKICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fY29kZSAlaW4lIGMoIm11ZyIsICJ0YmwiLCAiZGVtIiwgImdvZCIpKSkKc3VtbWFyeShtLm11Zy51cykKCiMgR2hhbmEgLS1tdWdzLCB0YWJsZXMsIGdvZCwgZGVtb25zCm0ubXVnLmdoYW5hIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmZfQUxUICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIkdoYW5hIiwKICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fY29kZSAlaW4lIGMoIm11ZyIsICJ0YmwiLCAiZGVtIiwgImdvZCIpKSkKc3VtbWFyeShtLm11Zy5naGFuYSkKCiMgRWN1YWRvciAtLW11Z3MsIHRhYmxlcywgZ29kLCBXZW5lCm0ubXVnLmVjdWFkb3IgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBkZl9leHRfdXNlbnNfY29uZl9BTFQgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiRWN1YWRvciIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtX2NvZGUgJWluJSBjKCJtdWciLCAidGJsIiwgIndlbiIsICJnb2QiKSkpICNXZW5lIGluc3RlYWQgb2YgZGVtb24Kc3VtbWFyeShtLm11Zy5lY3VhZG9yKQoKIyBQZXJ1IC0tbXVncywgdGFibGVzLCBnb2QsIE9uaSBJYm8gCm0ubXVnLnBlcnUgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBkZl9leHRfdXNlbnNfY29uZl9BTFQgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiUGVydSIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtX2NvZGUgJWluJSBjKCJ0YXoiLCAidGJsIiwgIm9uaSIsICJnb2QiKSkpCnN1bW1hcnkobS5tdWcucGVydSkKYGBgCgojIEFwcGVuZGl4IEE6IFJlc3BvbnNlcyBieSBvYmplY3QsIHZlcnNpb24sIGFuZCBjb3VudHJ5CgojIyBFeGlzdGVuY2UgCgojIyMgVVMKCmBgYHtyfQojIEp1c3QgdmVyc2lvbiAxIHF1ZXN0aW9ucy0tdGhlcmUgYXJlIDIxIHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2dybSIsICJzcG5fZXh0X2RlbSIsICJvcmRfZXh0X211ZyIsICJzY2lfZXh0X2d2dCIsICJmaWNfZXh0X3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfZ3JtIiA9ICJHZXJtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X2d2dCIgPSAiR3Jhdml0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfZXh0X3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJVUyBWZXJzaW9uIDEgcmVzcG9uc2VzIHRvIHdoZXRoZXIgb2JqZWN0cyBleGlzdCIsIAogICAgICAgICAgZGF0YSA9IGRmKQoKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X2docyIsICJmaWNfZXh0X2hhcCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9leHRfZ2hzIiA9ICJHaG9zdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9oYXAiID0gIkhhcnJ5IFBvdHRlciIpLCAKICAgICAgICAgIHRpdGxlID0gIlVTIFZlcnNpb24gMiByZXNwb25zZXMgdG8gd2hldGhlciBvYmplY3RzIGV4aXN0IiwgCiAgICAgICAgICBkYXRhID0gZGYpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIAp1c19kYXRhX2NvbWJpbmVkIDwtIGRmICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJVUyIpICU+JQogIHNlbGVjdChzY2lfZXh0X2dybSwgc3BuX2V4dF9kZW0sIG9yZF9leHRfbXVnLCBzY2lfZXh0X2d2dCwgZmljX2V4dF9zbW4sCiAgICAgICAgIHNjaV9leHRfY25jLCBzcG5fZXh0X2dvZCwgb3JkX2V4dF90YmwsIHNwbl9leHRfZ2hzLCBmaWNfZXh0X2hhcCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2d2dCA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2docyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X2hhcCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKdXNfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRkICUgYW5kIG4KICBsYWJzKAogICAgdGl0bGUgPSAiVVMgT250b2xvZ3kgUXVlc3Rpb25zLS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIgogICkKCmBgYAoKIyMjIEdoYW5hIAoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDM1IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2dybSIsICJzcG5fZXh0X2RlbSIsICJvcmRfZXh0X211ZyIsICJzY2lfZXh0X2ZyYyIsICJmaWNfZXh0X3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfZ3JtIiA9ICJHZXJtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X2ZyYyIgPSAiRm9yY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVmVyc2lvbiAxIHJlc3BvbnNlcyB0byB3aGV0aGVyIG9iamVjdHMgZXhpc3QiLCAKICAgICAgICAgIGRhdGEgPSBkZikKCiMgVmVyc2lvbiAyIC0tIDM1IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X2FicyIsICJmaWNfZXh0X2t3ayIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9leHRfYWJzIiA9ICJBYm9zb20gKHNtYWxsIGdvZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9rd2siID0gIkt3ZWt1IEFuYW5zZSAoZmljLiBjaGFyLikiKSwgCiAgICAgICAgICB0aXRsZSA9ICJHaGFuYSBWZXJzaW9uIDIgcmVzcG9uc2VzIHRvIHdoZXRoZXIgb2JqZWN0cyBleGlzdCIsIAogICAgICAgICAgZGF0YSA9IGRmKQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIApnaF9kYXRhX2NvbWJpbmVkIDwtIGRmICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJHaGFuYSIpICU+JQogIHNlbGVjdChzY2lfZXh0X2dybSwgc3BuX2V4dF9kZW0sIG9yZF9leHRfbXVnLCBzY2lfZXh0X2ZyYywgZmljX2V4dF9zbW4sCiAgICAgICAgIHNjaV9leHRfY25jLCBzcG5fZXh0X2dvZCwgb3JkX2V4dF90YmwsIHNwbl9leHRfYWJzLCBmaWNfZXh0X2t3aykgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2ZyYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2FicyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X2t3ayA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKZ2hfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwgICMgQWRkIHRleHQgb24gdGhlIGJhcnMKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRqdXN0IHRleHQgYXBwZWFyYW5jZQogIGxhYnMoCiAgICB0aXRsZSA9ICJHaGFuYSBPbnRvbG9neSBRdWVzdGlvbnMtLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIyBFY3VhZG9yCgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMTAgcGFydGljaXBhbnRzIApleGlzdF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgY29scyA9IGMoInNjaV9leHRfZmx1IiwgInNwbl9leHRfd2VuIiwgIm9yZF9leHRfbXVnIiwgInNjaV9leHRfcGFyIiwgImZpY19leHRfc3BkIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2NpX2V4dF9mbHUiID0gIkRhaWNhd28gKGZsdSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF93ZW4iID0gIldlbmUgKGRlbW9uL2ZvcmVzdCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9zcGQiID0gIlNwaWRlcm1hbiIpLCAKICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFZlcnNpb24gMSByZXNwb25zZXMgdG8gd2hldGhlciBvYmplY3RzIGV4aXN0IiwgCiAgICAgICAgICBkYXRhID0gZGYpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiRWN1YWRvciIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X29rdyIsICJmaWNfZXh0X3JhbSIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9leHRfb2t3IiA9ICJPbm9rYXdhIChnaG9zdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9yYW0iID0gIlJhbWJvIiksIAogICAgICAgICAgdGl0bGUgPSAiRWN1YWRvcmlhbiBBbWF6b24gVmVyc2lvbiAyIHJlc3BvbnNlcyB0byB3aGV0aGVyIG9iamVjdHMgZXhpc3QiLCAKICAgICAgICAgIGRhdGEgPSBkZikKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIEJPVEggVkVSU0lPTlMgQ09NQklORUQgQlkgUVVFU1RJT04gVFlQRSAKZWNfZGF0YV9jb21iaW5lZCA8LSBkZiAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiRWN1YWRvciIpICU+JQogIHNlbGVjdChzY2lfZXh0X2ZsdSwgc3BuX2V4dF93ZW4sIG9yZF9leHRfbXVnLCBzY2lfZXh0X3BhciwgZmljX2V4dF9zcGQsCiAgICAgICAgIHNjaV9leHRfY25jLCBzcG5fZXh0X2dvZCwgb3JkX2V4dF90YmwsIHNwbl9leHRfb2t3LCBmaWNfZXh0X3JhbSkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfZmx1ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X3dlbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X29rdyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3JhbSA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKZWNfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwgICMgQWRkIHRleHQgb24gdGhlIGJhcnMKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRqdXN0IHRleHQgYXBwZWFyYW5jZQogIGxhYnMoCiAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBPbnRvbG9neSBRdWVzdGlvbnMtLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIyBQZXJ1CgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMjEgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlBlcnUiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygic3BuX2V4dF95c2giLCAic2NpX2V4dF9wYXIiLCAic3BuX2V4dF9nb2QiLCAib3JkX2V4dF90YmwiLCAiZmljX2V4dF9uanQiLCAic3BuX2V4dF9jaGEiLCAic2NpX2V4dF9jbmMiKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzcG5fZXh0X3lzaCIgPSAiTWFodWEgWW9zaGluXG4oYmFkIHNwaXJpdCkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X2dvZCIgPSAiR29kIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAib3JkX2V4dF90YmwiID0gIlRhYmxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgImZpY19leHRfbmp0IiA9ICJOaW5qYSBUdXJ0bGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9jaGEiID0gIkNoYWlrb25pXG4oaW52aXNpYmxlIG1hZ2ljIGh1bWFucykiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X2NuYyIgPSAiQ2FuY2VyIiksIAogICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uIFZlcnNpb24gMSByZXNwb25zZXMgdG8gd2hldGhlciBvYmplY3RzIGV4aXN0IiwgCiAgICAgICAgICBkYXRhID0gZGYpCgoKIyBWZXJzaW9uIDIgLS0gMTkgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlBlcnUiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICBjb2xzID0gYygic2NpX2V4dF9ncm0iLCAibmFzX2V4dF9yb24iLCAib3JkX2V4dF90YXoiLCAic3BuX2V4dF9vbmkiLCAiZmljX2V4dF9zbW4iLCAibmFzX2V4dF9kbHAiKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfZXh0X2dybSIgPSAiR2VybXMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hc19leHRfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RheiIgPSAiQ29mZmVlIE11ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X29uaSIgPSAiT25pIElib1xuKGdvb2Qgc3Bpcml0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfZXh0X3NtbiIgPSAiU3VwZXJtYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAibmFzX2V4dF9kbHAiID0gIkpvc2hpbiBLb2tvc2hrYVxuKHBpbmsgcml2ZXIgZG9scGhpbikiKSwgCiAgICAgICAgICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVmVyc2lvbiAyIHJlc3BvbnNlcyB0byB3aGV0aGVyIG9iamVjdHMgZXhpc3QiLCAKICAgICAgICAgIGRhdGEgPSBkZikKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJPVEggVkVSU0lPTlMgQ09NQklORUQKCnBlcnVfZGF0YV9jb21iaW5lZCA8LSBkZiAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiUGVydSIpICU+JQogIHNlbGVjdChzcG5fZXh0X3lzaCwgc2NpX2V4dF9wYXIsIHNwbl9leHRfZ29kLCBvcmRfZXh0X3RibCwgZmljX2V4dF9uanQsIHNwbl9leHRfY2hhLCBzY2lfZXh0X2NuYywKICAgICAgICAgc2NpX2V4dF9ncm0sIG5hc19leHRfcm9uLCBvcmRfZXh0X3Rheiwgc3BuX2V4dF9vbmksIGZpY19leHRfc21uLCBuYXNfZXh0X2RscCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfcGFyID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfdGF6ID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X3lzaCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2NoYSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfZXh0X3JvbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X29uaSA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzX2V4dF9kbHAgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2V4dF9uanQgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2V4dF9zbW4gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CnBlcnVfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwgICMgQWRkIHRleHQgb24gdGhlIGJhcnMKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRqdXN0IHRleHQgYXBwZWFyYW5jZQogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJ1IEFtYXpvbiBPbnRvbG9neSBRdWVzdGlvbnMtLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIENvbmZpZGVuY2UgCgojIyMgVVMKCmBgYHtyLCBmaWcuYXNwID0gMC41fQojIFZlcnNpb24gMS0tMjEgcGFydGljaXBhbnRzCmNvbmZfYmFyX2J5X2V4aXN0ZW5jZSgKICBjb3VudHJ5ID0gIlVTIiwKICB2ZXJzaW9uID0gMSwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9ncm0iLCAic3BuX2NvbmYuZXh0X2RlbSIsICJvcmRfY29uZi5leHRfbXVnIiwgInNjaV9jb25mLmV4dF9ndnQiLCAiZmljX2NvbmYuZXh0X3NtbiIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfZ3JtIiwgInNwbl9leHRfZGVtIiwgIm9yZF9leHRfbXVnIiwgInNjaV9leHRfZ3Z0IiwgImZpY19leHRfc21uIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfZ3JtIiA9ICJHZXJtcyIsCiAgICAic3BuX2NvbmYuZXh0X2RlbSIgPSAiRGVtb25zIiwKICAgICJvcmRfY29uZi5leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAic2NpX2NvbmYuZXh0X2d2dCIgPSAiR3Jhdml0eSIsCiAgICAiZmljX2NvbmYuZXh0X3NtbiIgPSAiU3VwZXJtYW4iCiAgKSwKICB0aXRsZSA9ICJVUyBWMTogQ29uZmlkZW5jZSBieSBCZWxpZWYiCikKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJVUyIsCiAgdmVyc2lvbiA9IDIsCiAgY29uZl9jb2xzID0gYygKICAgICJzY2lfY29uZi5leHRfY25jIiwgInNwbl9jb25mLmV4dF9nb2QiLCAib3JkX2NvbmYuZXh0X3RibCIsICJzcG5fY29uZi5leHRfZ2hzIiwgImZpY19jb25mLmV4dF9oYXAiCiAgKSwKICBleGlzdF9jb2xzID0gYygKICAgICJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X2docyIsICJmaWNfZXh0X2hhcCIKICApLAogIGNvbF9uYW1lcyA9IGMoCiAgICAic2NpX2NvbmYuZXh0X2NuYyIgPSAiQ2FuY2VyIiwKICAgICJzcG5fY29uZi5leHRfZ29kIiA9ICJHb2QiLAogICAgIm9yZF9jb25mLmV4dF90YmwiID0gIlRhYmxlcyIsCiAgICAic3BuX2NvbmYuZXh0X2docyIgPSAiR2hvc3RzIiwKICAgICJmaWNfY29uZi5leHRfaGFwIiA9ICJIYXJyeSBQb3R0ZXIiCiAgKSwKICB0aXRsZSA9ICJVUyBWMjogQ29uZmlkZW5jZSBieSBCZWxpZWYiCikKCmBgYAoKIyMjIEdoYW5hIAoKYGBge3IsIGZpZy5hc3AgPSAwLjV9CiMgVmVyc2lvbiAxIC0tIDM1IHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJHaGFuYSIsCiAgdmVyc2lvbiA9IDEsCiAgY29uZl9jb2xzID0gYygKICAgICJzY2lfY29uZi5leHRfZ3JtIiwgInNwbl9jb25mLmV4dF9kZW0iLCAib3JkX2NvbmYuZXh0X211ZyIsICJzY2lfY29uZi5leHRfZnJjIiwgImZpY19jb25mLmV4dF9zbW4iCiAgKSwKICBleGlzdF9jb2xzID0gYygKICAgICJzY2lfZXh0X2dybSIsICJzcG5fZXh0X2RlbSIsICJvcmRfZXh0X211ZyIsICJzY2lfZXh0X2ZyYyIsICJmaWNfZXh0X3NtbiIKICApLAogIGNvbF9uYW1lcyA9IGMoCiAgICAic2NpX2NvbmYuZXh0X2dybSIgPSAiR2VybXMiLAogICAgInNwbl9jb25mLmV4dF9kZW0iID0gIkRlbW9ucyIsCiAgICAib3JkX2NvbmYuZXh0X211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgInNjaV9jb25mLmV4dF9mcmMiID0gIkZvcmNlIiwKICAgICJmaWNfY29uZi5leHRfc21uIiA9ICJTdXBlcm1hbiIKICApLAogIHRpdGxlID0gIkdoYW5hIFYxOiBDb25maWRlbmNlIGJ5IEJlbGllZiIKKQoKIyBWZXJzaW9uIDIgLS0gMzUgcGFydGljaXBhbnRzCmNvbmZfYmFyX2J5X2V4aXN0ZW5jZSgKICBjb3VudHJ5ID0gIkdoYW5hIiwKICB2ZXJzaW9uID0gMiwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9jbmMiLCAic3BuX2NvbmYuZXh0X2dvZCIsICJvcmRfY29uZi5leHRfdGJsIiwgInNwbl9jb25mLmV4dF9hYnMiLCAiZmljX2NvbmYuZXh0X2t3ayIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfY25jIiwgInNwbl9leHRfZ29kIiwgIm9yZF9leHRfdGJsIiwgInNwbl9leHRfYWJzIiwgImZpY19leHRfa3drIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfY25jIiA9ICJDYW5jZXIiLAogICAgInNwbl9jb25mLmV4dF9nb2QiID0gIkdvZCIsCiAgICAib3JkX2NvbmYuZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICJzcG5fY29uZi5leHRfYWJzIiA9ICJBYm9zb21cbihzbWFsbCBnb2QpIiwKICAgICJmaWNfY29uZi5leHRfa3drIiA9ICJLd2VrdSBBbmFuc2VcbihmaWMuIGNoYXIuKSIKICApLAogIHRpdGxlID0gIkdoYW5hIFYyOiBDb25maWRlbmNlIGJ5IEJlbGllZiIKKQoKYGBgCgojIyMgRWN1YWRvcgoKYGBge3IsIGZpZy5hc3AgPSAwLjV9CiMgVjEgMTAgcGFydGljaXBhbnRzIApjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJFY3VhZG9yIiwKICB2ZXJzaW9uID0gMSwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9mbHUiLCAic3BuX2NvbmYuZXh0X3dlbiIsICJvcmRfY29uZi5leHRfbXVnIiwgInNjaV9jb25mLmV4dF9wYXIiLCAiZmljX2NvbmYuZXh0X3NwZCIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfZmx1IiwgInNwbl9leHRfd2VuIiwgIm9yZF9leHRfbXVnIiwgInNjaV9leHRfcGFyIiwgImZpY19leHRfc3BkIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfZmx1IiA9ICJEYWljYXdvIChmbHUpIiwKICAgICJzcG5fY29uZi5leHRfd2VuIiA9ICJXZW5lXG4oZGVtb24vZm9yZXN0IGdvZCkiLAogICAgIm9yZF9jb25mLmV4dF9tdWciID0gIkNvZmZlZSBNdWdzIiwKICAgICJzY2lfY29uZi5leHRfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAiZmljX2NvbmYuZXh0X3NwZCIgPSAiU3BpZGVybWFuIgogICksCiAgdGl0bGUgPSAiRWN1YWRvcmlhbiBBbWF6b24gVjE6IENvbmZpZGVuY2UgYnkgQmVsaWVmIgopCgojIFYyIDEwIHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJFY3VhZG9yIiwKICB2ZXJzaW9uID0gMiwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9jbmMiLCAic3BuX2NvbmYuZXh0X2dvZCIsICJvcmRfY29uZi5leHRfdGJsIiwgInNwbl9jb25mLmV4dF9va3ciLCAiZmljX2NvbmYuZXh0X3JhbSIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfY25jIiwgInNwbl9leHRfZ29kIiwgIm9yZF9leHRfdGJsIiwgInNwbl9leHRfb2t3IiwgImZpY19leHRfcmFtIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfY25jIiA9ICJDYW5jZXIiLAogICAgInNwbl9jb25mLmV4dF9nb2QiID0gIkdvZCIsCiAgICAib3JkX2NvbmYuZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICJzcG5fY29uZi5leHRfb2t3IiA9ICJPbm9rYXdhXG4oZ2hvc3QpIiwKICAgICJmaWNfY29uZi5leHRfcmFtIiA9ICJSYW1ibyIKICApLAogIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFYyOiBDb25maWRlbmNlIGJ5IEJlbGllZiIKKQoKYGBgCgojIyMgUGVydQoKYGBge3IsIGZpZy5hc3AgPSAwLjV9CiMgVjEgLS0gMjEgcGFydGljaXBhbnRzCmNvbmZfYmFyX2J5X2V4aXN0ZW5jZSgKICBjb3VudHJ5ID0gIlBlcnUiLAogIHZlcnNpb24gPSAxLAogIGNvbmZfY29scyA9IGMoCiAgICAic3BuX2NvbmYuZXh0X3lzaCIsICJzY2lfY29uZi5leHRfcGFyIiwgInNwbl9jb25mLmV4dF9nb2QiLCAib3JkX2NvbmYuZXh0X3RibCIsICJmaWNfY29uZi5leHRfbmp0IiwgCiAgICAic3BuX2NvbmYuZXh0X2NoYSIsICJzY2lfY29uZi5leHRfY25jIgogICksCiAgZXhpc3RfY29scyA9IGMoCiAgICAic3BuX2V4dF95c2giLCAic2NpX2V4dF9wYXIiLCAic3BuX2V4dF9nb2QiLCAib3JkX2V4dF90YmwiLCAiZmljX2V4dF9uanQiLCAic3BuX2V4dF9jaGEiLCAic2NpX2V4dF9jbmMiCiAgKSwKICBjb2xfbmFtZXMgPSBjKAogICAgInNwbl9jb25mLmV4dF95c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwKICAgICJzY2lfY29uZi5leHRfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAic3BuX2NvbmYuZXh0X2dvZCIgPSAiR29kIiwKICAgICJvcmRfY29uZi5leHRfdGJsIiA9ICJUYWJsZXMiLAogICAgImZpY19jb25mLmV4dF9uanQiID0gIk5pbmphIFR1cnRsZXMiLAogICAgInNwbl9jb25mLmV4dF9jaGEiID0gIkNoYWlrb25pXG4oaW52aXNpYmxlIG1hZ2ljIGh1bWFucykiLAogICAgInNjaV9jb25mLmV4dF9jbmMiID0gIkNhbmNlciIKICApLAogIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWMTogQ29uZmlkZW5jZSBieSBCZWxpZWYiCikKCgojIFYyIC0tIDE5IHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJQZXJ1IiwKICB2ZXJzaW9uID0gMiwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9ncm0iLCAibmFzX2NvbmYuZXh0X3JvbiIsICJvcmRfY29uZi5leHRfdGF6IiwgInNwbl9jb25mLmV4dF9vbmkiLCAiZmljX2NvbmYuZXh0X3NtbiIsICJuYXNfY29uZi5leHRfZGxwIgogICksCiAgZXhpc3RfY29scyA9IGMoCiAgICAic2NpX2V4dF9ncm0iLCAibmFzX2V4dF9yb24iLCAib3JkX2V4dF90YXoiLCAic3BuX2V4dF9vbmkiLCAiZmljX2V4dF9zbW4iLCAibmFzX2V4dF9kbHAiCiAgKSwKICBjb2xfbmFtZXMgPSBjKAogICAgInNjaV9jb25mLmV4dF9ncm0iID0gIkdlcm1zIiwKICAgICJuYXNfY29uZi5leHRfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAib3JkX2NvbmYuZXh0X3RheiIgPSAiQ29mZmVlIE11ZyIsCiAgICAic3BuX2NvbmYuZXh0X29uaSIgPSAiT25pIElib1xuKGdvb2Qgc3Bpcml0KSIsCiAgICAiZmljX2NvbmYuZXh0X3NtbiIgPSAiU3VwZXJtYW4iLAogICAgIm5hc19jb25mLmV4dF9kbHAiID0gIkpvc2hpbiBLb2tvc2hrYVxuKHBpbmsgcml2ZXIgZG9scGhpbikiCiAgKSwKICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVjI6IENvbmZpZGVuY2UgYnkgQmVsaWVmIgopCgpgYGAKCiMjIENvbW11bmljYXRpb24gCgojIyMgVVMKCmBgYHtyfQp5bl9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfY29tdV9ncm0iLCAic3BuX2NvbXVfZGVtIiwgIm9yZF9jb211X211ZyIsICJzY2lfY29tdV9ndnQiLCAiZmljX2NvbXVfc21uIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9jb211X2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZGVtIiA9ICJEZW1vbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9ndnQiID0gIkdyYXZpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2NvbXVfc21uIiA9ICJTdXBlcm1hbiIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJVUyBWMTogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIpCgojIFZlcnNpb24gMiAtLSAyOCBwYXJ0aWNpcGFudHMKeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfY25jIiwgInNwbl9jb211X2dvZCIsICJvcmRfY29tdV90YmwiLCAic3BuX2NvbXVfZ2hzIiwgImZpY19jb211X2hhcCIpLCAKICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfY29tdV9jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2docyIgPSAiR2hvc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X2hhcCIgPSAiSGFycnkgUG90dGVyIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTIFYyOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgp5bl9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIlVTIiwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9jb211X2dybSIsICJzcG5fY29tdV9kZW0iLCAib3JkX2NvbXVfbXVnIiwgInNjaV9jb211X2d2dCIsICJmaWNfY29tdV9zbW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9jbmMiLCAic3BuX2NvbXVfZ29kIiwgIm9yZF9jb211X3RibCIsICJzcG5fY29tdV9naHMiLCAiZmljX2NvbXVfaGFwIiksCiAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwcGluZyA9IGMoInNjaV9jb211X2dybSIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9kZW0iID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV9tdWciID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2d2dCIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zbW4iID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9jbmMiID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfdGJsIiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9naHMiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9oYXAiID0gIkZpY3Rpb25hbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IgogICAgICAgICAgICAgICAgICkKYGBgCgojIyMgR2hhbmEgCgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMzUgcGFydGljaXBhbnRzIGJ5IGl0ZW0gYW5kIHZlcnNpb24KeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfZ3JtIiwgInNwbl9jb211X2RlbSIsICJvcmRfY29tdV9tdWciLCAic2NpX2NvbXVfZnJjIiwgImZpY19jb211X3NtbiIpLCAKICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfY29tdV9ncm0iID0gIkdlcm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfZnJjIiA9ICJGb3JjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkdoYW5hIFYxOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgVmVyc2lvbiAyIC0tIDM1IHBhcnRpY2lwYW50cyBieSBpdGVtIGFuZCB2ZXJzaW9uCnluX3N0YWNrZWRfYmFyKGNvdW50cnkgPSAiR2hhbmEiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9jb211X2NuYyIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgInNwbl9jb211X2FicyIsICJmaWNfY29tdV9rd2siKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX2NvbXVfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfYWJzIiA9ICJBYm9zb21cbihzbWFsbCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X2t3ayIgPSAiS3dla3UgQW5hbnNlXG4oZmljLiBjaGFyLikiKSwgCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVjI6IENhbiBwZW9wbGUgY29tbXVuaWNhdGUgd2l0aCBfXz8iKQoKIyBCb3RoIHZlcnNpb25zIHRvZ2V0aGVyCnluX2J5X2NhdGVnb3J5KGNvdW50cnkgPSAiR2hhbmEiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfZ3JtIiwgInNwbl9jb211X2RlbSIsICJvcmRfY29tdV9tdWciLCAic2NpX2NvbXVfZnJjIiwgImZpY19jb211X3NtbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgInNwbl9jb211X2FicyIsICJmaWNfY29tdV9rd2siKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX2NvbXVfZ3JtIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2RlbSIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfZnJjIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3NtbiIgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV90YmwiID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2FicyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X2t3ayIgPSAiRmljdGlvbmFsIiksCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiR2hhbmE6IENhbiBwZW9wbGUgY29tbXVuaWNhdGUgd2l0aCBfXz8iCiAgICAgICAgICAgICAgICAgKQpgYGAKCiMjIyBFY3VhZG9yCgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMTAgcGFydGljaXBhbnRzIAp5bl9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIkVjdWFkb3IiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9jb211X2ZsdSIsICJzcG5fY29tdV93ZW4iLCAib3JkX2NvbXVfbXVnIiwgInNjaV9jb211X3BhciIsICJmaWNfY29tdV9zcGQiKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX2NvbXVfZmx1IiA9ICJEYWljYXdvIChmbHUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X3dlbiIgPSAiV2VuZVxuKGRlbW9uL2ZvcmVzdCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zcGQiID0gIlNwaWRlcm1hbiIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWMTogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfY29tdV9jbmMiLCAic3BuX2NvbXVfZ29kIiwgIm9yZF9jb211X3RibCIsICJzcG5fY29tdV9va3ciLCAiZmljX2NvbXVfcmFtIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9jb211X2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2dvZCIgPSAiR29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X29rdyIgPSAiT25va2F3YVxuKGdob3N0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9yYW0iID0gIlJhbWJvIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFYyOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgp5bl9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIkVjdWFkb3IiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfZmx1IiwgInNwbl9jb211X3dlbiIsICJvcmRfY29tdV9tdWciLCAic2NpX2NvbXVfcGFyIiwgImZpY19jb211X3NwZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgInNwbl9jb211X29rdyIsICJmaWNfY29tdV9yYW0iKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX2NvbXVfZmx1IiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X3dlbiIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfcGFyIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3NwZCIgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV90YmwiID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X29rdyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3JhbSIgPSAiRmljdGlvbmFsIiksCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiRWN1YWRvcmlhbiBBbWF6b246IENhbiBwZW9wbGUgY29tbXVuaWNhdGUgd2l0aCBfXz8iCiAgICAgICAgICAgICAgICAgKQpgYGAKCiMjIyBQZXJ1CgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMjEgcGFydGljaXBhbnRzCnluX3N0YWNrZWRfYmFyKGNvdW50cnkgPSAiUGVydSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic3BuX2NvbXVfeXNoIiwgInNjaV9jb211X3BhciIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X25qdCIsICJzcG5fY29tdV9jaGEiLCAic2NpX2NvbXVfY25jIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNwbl9jb211X3lzaCIgPSAiTWFodWEgWW9zaGluXG4oYmFkIHNwaXJpdCkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9wYXIiID0gIkludGVzdGluYWwgUGFyYXNpdGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZ29kIiA9ICJHb2QiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV90YmwiID0gIlRhYmxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X25qdCIgPSAiTmluamEgVHVydGxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2NoYSIgPSAiQ2hhaWtvbmlcbihpbnZpc2libGUgbWFnaWMgaHVtYW5zKSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIgPSAiQ2FuY2VyIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWMTogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIpCgojIFZlcnNpb24gMiAtLSAxOSBwYXJ0aWNpcGFudHMKeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfY29tdV9ncm0iLCAibmFzX2NvbXVfcm9uIiwgIm9yZF9jb211X3RheiIsICJzcG5fY29tdV9vbmkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2NvbXVfc21uIiwgIm5hc19jb211X2RscCIpLCAKICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfY29tdV9ncm0iID0gIkdlcm1zIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfY29tdV9yb24iID0gIlJvbmluXG4oQW5hY29uZGEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RheiIgPSAiQ29mZmVlIE11ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9vbmkiID0gIk9uaSBJYm9cbihnb29kIHNwaXJpdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2NvbXVfc21uIiA9ICJTdXBlcm1hbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfY29tdV9kbHAiID0gIkpvc2hpbiBLb2tvc2hrYVxuKHBpbmsgcml2ZXIgZG9scGhpbikiKSwgCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uIFYyOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgp5bl9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIlBlcnUiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic3BuX2NvbXVfeXNoIiwgInNjaV9jb211X3BhciIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X25qdCIsICJzcG5fY29tdV9jaGEiLCAic2NpX2NvbXVfY25jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfZ3JtIiwgIm5hc19jb211X3JvbiIsICJvcmRfY29tdV90YXoiLCAic3BuX2NvbXVfb25pIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3NtbiIsICJuYXNfY29tdV9kbHAiKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic3BuX2NvbXVfeXNoIiA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9wYXIiID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RibCIgPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9uanQiID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2NoYSIgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfY25jIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2dybSIgPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAibmFzX2NvbXVfcm9uIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfdGF6IiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9vbmkiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zbW4iID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfY29tdV9kbHAiID0gIlN1cGVybmF0dXJhbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbjogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMgU3BlY2lhbCBQZW9wbGUgCgojIyMgVVMKCmBgYHtyfQpzcGV4cF9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZ3JtIiwgInNwbl9zcGV4cF9kZW0iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfZ3Z0IiwgImZpY19zcGV4cF9zbW4iKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9zcGV4cF9tdWciID0gIkNvZmZlZSBNdWdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9ndnQiID0gIkdyYXZpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiVVMgVjE6IENhbiBfXyBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IikKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpzcGV4cF9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfZ2hzIiwgImZpY19zcGV4cF9oYXAiKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9zcGV4cF90YmwiID0gIlRhYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ2hzIiA9ICJHaG9zdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX2hhcCIgPSAiSGFycnkgUG90dGVyIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTIFYyOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIpCgojIEJvdGggdmVyc2lvbnMgdG9nZXRoZXIKc3BleHBfYnlfY2F0ZWdvcnkoY291bnRyeSA9ICJVUyIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZ3JtIiwgInNwbl9zcGV4cF9kZW0iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfZ3Z0IiwgImZpY19zcGV4cF9zbW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfZ2hzIiwgImZpY19zcGV4cF9oYXAiKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX3NwZXhwX2dybSIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZGVtIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2d2dCIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfc21uIiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX3RibCIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX2docyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9oYXAiID0gIkZpY3Rpb25hbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMjIEdoYW5hIAoKVGhpcyBxdWVzdGlvbiB3YXMgbm90IGFza2VkIGluIEdoYW5hCgojIyMgRWN1YWRvcgoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDEwIHBhcnRpY2lwYW50cyAKc3BleHBfc3RhY2tlZF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZmx1IiwgInNwbl9zcGV4cF93ZW4iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfcGFyIiwgImZpY19zcGV4cF9zcGQiKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2ZsdSIgPSAiRGFpY2F3byAoZmx1KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfd2VuIiA9ICJXZW5lXG4oZGVtb24vZm9yZXN0IGdvZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NwZCIgPSAiU3BpZGVybWFuIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFYxOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKc3BleHBfc3RhY2tlZF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfb2t3IiwgImZpY19zcGV4cF9yYW0iKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX29rdyIgPSAiT25va2F3YVxuKGdob3N0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfcmFtIiA9ICJSYW1ibyIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWMjogQ2FuIF9fIGJlIGV4cGVyaWVuY2VkIGJ5IGFueW9uZSBvciBvbmx5IGJ5IHNwZWNpZmljIHBlb3BsZT8iKQoKIyBCb3RoIHZlcnNpb25zIHRvZ2V0aGVyCnNwZXhwX2J5X2NhdGVnb3J5KGNvdW50cnkgPSAiRWN1YWRvciIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZmx1IiwgInNwbl9zcGV4cF93ZW4iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfcGFyIiwgImZpY19zcGV4cF9zcGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfb2t3IiwgImZpY19zcGV4cF9yYW0iKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX3NwZXhwX2ZsdSIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfd2VuIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX3BhciIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfc3BkIiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX3RibCIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX29rdyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9yYW0iID0gIkZpY3Rpb25hbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMjIFBlcnUKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAyMSBwYXJ0aWNpcGFudHMKc3BleHBfc3RhY2tlZF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzcG5fc3BleHBfeXNoIiwgInNjaV9zcGV4cF9wYXIiLCAic3BuX3NwZXhwX2dvZCIsICJvcmRfc3BleHBfdGJsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9uanQiLCAic3BuX3NwZXhwX2NoYSIsICJzY2lfc3BleHBfY25jIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNwbl9zcGV4cF95c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJHb2QiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGJsIiA9ICJUYWJsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfbmp0IiA9ICJOaW5qYSBUdXJ0bGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX2NoYSIgPSAiQ2hhaWtvbmlcbihpbnZpc2libGUgbWFnaWMgaHVtYW5zKSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9jbmMiID0gIkNhbmNlciIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVjE6IENhbiBfXyBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IikKCiMgVmVyc2lvbiAyIC0tIDE5IHBhcnRpY2lwYW50cwpzcGV4cF9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlBlcnUiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9zcGV4cF9ncm0iLCAibmFzX3NwZXhwX3JvbiIsICJvcmRfc3BleHBfdGF6IiwgInNwbl9zcGV4cF9vbmkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIsICJuYXNfc3BleHBfZGxwIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9zcGV4cF9ncm0iID0gIkdlcm1zIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfc3BleHBfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGF6IiA9ICJDb2ZmZWUgTXVnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9vbmkiID0gIk9uaSBJYm9cbihnb29kIHNwaXJpdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIgPSAiU3VwZXJtYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAibmFzX3NwZXhwX2RscCIgPSAiSm9zaGluIEtva29zaGthXG4ocGluayByaXZlciBkb2xwaGluKSIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVjI6IENhbiBfXyBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgpzcGV4cF9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIlBlcnUiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic3BuX3NwZXhwX3lzaCIsICJzY2lfc3BleHBfcGFyIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfbmp0IiwgInNwbl9zcGV4cF9jaGEiLCAic2NpX3NwZXhwX2NuYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9ncm0iLCAibmFzX3NwZXhwX3JvbiIsICJvcmRfc3BleHBfdGF6IiwgInNwbl9zcGV4cF9vbmkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIsICJuYXNfc3BleHBfZGxwIiksCiAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwcGluZyA9IGMoInNwbl9zcGV4cF95c2giID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9wYXIiID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGJsIiA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9uanQiID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9jaGEiID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9jbmMiID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2dybSIgPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAibmFzX3NwZXhwX3JvbiIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9zcGV4cF90YXoiID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9vbmkiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfc21uIiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFzX3NwZXhwX2RscCIgPSAiU3VwZXJuYXR1cmFsIiksCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMgQ2FuIFggYmUgc2Vuc2VkPwoKIyMjIFVTCgpgYGB7cn0KIyBKdXN0IHZlcnNpb24gMSBxdWVzdGlvbnMtLXRoZXJlIGFyZSAyMSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiVVMiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygic2Vuc19ncm0iLCAic2Vuc19kZW0iLCAic2Vuc19tdWciLCAic2Vuc19ndnQiLCAic2Vuc19zbW4iKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzZW5zX2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19kZW0iID0gIkRlbW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19ndnQiID0gIkdyYXZpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgdGl0bGUgPSAiVVMgVmVyc2lvbiAxLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgoKIyBWZXJzaW9uIDIgLS0gMjggcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInNlbnNfY25jIiwgInNlbnNfZ29kIiwgInNlbnNfdGJsIiwgInNlbnNfZ2hzIiwgInNlbnNfaGFwIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2Vuc19jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2dvZCIgPSAiR29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19naHMiID0gIkdob3N0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2hhcCIgPSAiSGFycnkgUG90dGVyIiksIAogICAgICAgICAgdGl0bGUgPSAiVVMgVmVyc2lvbiAyLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIAp1c19zZW5zX2NvbWJpbmVkIDwtIGRmX3NlbnMgJT4lCiAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIikgJT4lCiAgc2VsZWN0KHNlbnNfZ3JtLCBzZW5zX2RlbSwgc2Vuc19tdWcsIHNlbnNfZ3Z0LCBzZW5zX3NtbiwKICAgICAgICAgc2Vuc19jbmMsIHNlbnNfZ29kLCBzZW5zX3RibCwgc2Vuc19naHMsIHNlbnNfaGFwKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ3Z0ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19tdWcgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZGVtID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ2hzID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfaGFwID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc21uID0gIkZpY3Rpb25hbCIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkocXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKSAgIyBPcmRlciBieSBwcm9wb3J0aW9uCgojIENyZWF0ZSBiYXIgcGxvdAp1c19zZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIlVTOiBDYW4gX18gYmUgc2Vuc2VkPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYAoKIyMjIEdoYW5hIAoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDM1IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzZW5zX2dybSIsICJzZW5zX2RlbSIsICJzZW5zX211ZyIsICJzZW5zX2ZyYyIsICJzZW5zX3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNlbnNfZ3JtIiA9ICJHZXJtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2ZyYyIgPSAiRm9yY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVmVyc2lvbiAxLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgojIFZlcnNpb24gMiAtLSAzNSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiR2hhbmEiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICBjb2xzID0gYygic2Vuc19jbmMiLCAic2Vuc19nb2QiLCAic2Vuc190YmwiLCAic2Vuc19hYnMiLCAic2Vuc19rd2siKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzZW5zX2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc190YmwiID0gIlRhYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2FicyIgPSAiQWJvc29tIChzbWFsbCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfa3drIiA9ICJLd2VrdSBBbmFuc2UgKGZpYy4gY2hhci4pIiksIAogICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVmVyc2lvbiAyLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyBCT1RIIFZFUlNJT05TIENPTUJJTkVEIEJZIFFVRVNUSU9OIFRZUEUgCmdoX3NlbnNfY29tYmluZWQgPC0gZGZfc2VucyAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSAlPiUKICBzZWxlY3Qoc2Vuc19ncm0sIHNlbnNfZGVtLCBzZW5zX211Zywgc2Vuc19mcmMsIHNlbnNfc21uLAogICAgICAgICBzZW5zX2NuYywgc2Vuc19nb2QsIHNlbnNfdGJsLCBzZW5zX2Ficywgc2Vuc19rd2spICU+JQogIG11dGF0ZShhY3Jvc3MoZXZlcnl0aGluZygpLCBhcy5udW1lcmljKSkgJT4lCiAgcGl2b3RfbG9uZ2VyKGV2ZXJ5dGhpbmcoKSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUKICBtdXRhdGUoCiAgICBxdWVzdGlvbl90eXBlID0gcmVjb2RlKHF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19mcmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX211ZyA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfdGJsID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19nb2QgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19kZW0gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19hYnMgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19rd2sgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19zbW4gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CmdoX3NlbnNfY29tYmluZWQgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90eXBlLCAtcHJvcG9ydGlvbl95ZXMpLCB5ID0gcHJvcG9ydGlvbl95ZXMsIGZpbGwgPSBxdWVzdGlvbl90eXBlKSkgKwogIGdlb21fY29sKHdpZHRoID0gMC44KSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudF9mb3JtYXQoYWNjdXJhY3kgPSAxKSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsgICMgUmVtb3ZlcyB0aGUgbGVnZW5kCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChwcm9wb3J0aW9uX3llcywgYWNjdXJhY3kgPSAxKSksICAjIEFkZCB0ZXh0IG9uIHRoZSBiYXJzCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCBjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSA1KSArICAjIEFkanVzdCB0ZXh0IGFwcGVhcmFuY2UKICBsYWJzKAogICAgdGl0bGUgPSAiR2hhbmE6IENhbiBfXyBiZSBzZW5zZWQ/LS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIikKYGBgCgojIyMgRWN1YWRvcgoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDEwIHBhcnRpY2lwYW50cyAKZXhpc3RfYmFyKGNvdW50cnkgPSAiRWN1YWRvciIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzZW5zX2ZsdSIsICJzZW5zX3dlbiIsICJzZW5zX211ZyIsICJzZW5zX3BhciIsICJzZW5zX3NwZCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNlbnNfZmx1IiA9ICJEYWljYXdvIChmbHUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfd2VuIiA9ICJXZW5lIChkZW1vbi9mb3Jlc3QgZ29kKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19wYXIiID0gIkludGVzdGluYWwgUGFyYXNpdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfc3BkIiA9ICJTcGlkZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWZXJzaW9uIDEtLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCiMgVmVyc2lvbiAyIC0tIDEwIHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInNlbnNfY25jIiwgInNlbnNfZ29kIiwgInNlbnNfdGJsIiwgInNlbnNfb2t3IiwgInNlbnNfcmFtIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2Vuc19jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2dvZCIgPSAiR29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19va3ciID0gIk9ub2thd2EgKGdob3N0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX3JhbSIgPSAiUmFtYm8iKSwgCiAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWZXJzaW9uIDItLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIEJPVEggVkVSU0lPTlMgQ09NQklORUQgQlkgUVVFU1RJT04gVFlQRSAKZWNfc2Vuc19jb21iaW5lZCA8LSBkZl9zZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikgJT4lCiAgc2VsZWN0KHNlbnNfZmx1LCBzZW5zX3dlbiwgc2Vuc19tdWcsIHNlbnNfcGFyLCBzZW5zX3NwZCwKICAgICAgICAgc2Vuc19jbmMsIHNlbnNfZ29kLCBzZW5zX3RibCwgc2Vuc19va3csIHNlbnNfcmFtKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19mbHUgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcGFyID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19tdWcgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfd2VuID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc3BkID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcmFtID0gIkZpY3Rpb25hbCIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkocXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKSAgIyBPcmRlciBieSBwcm9wb3J0aW9uCgojIENyZWF0ZSBiYXIgcGxvdAplY19zZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkNhbiBfXyBiZSBzZW5zZWQ/LS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIikKYGBgCgojIyMgUGVydQoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDIxIHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgY29scyA9IGMoInNlbnNfeXNoIiwgInNlbnNfcGFyIiwgInNlbnNfZ29kIiwgInNlbnNfdGJsIiwgInNlbnNfbmp0IiwgInNlbnNfY2hhIiwgInNlbnNfY25jIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2Vuc195c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19wYXIiID0gIkludGVzdGluYWwgUGFyYXNpdGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19nb2QiID0gIkdvZCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGJsIiA9ICJUYWJsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX25qdCIgPSAiTmluamEgVHVydGxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfY2hhIiA9ICJDaGFpa29uaVxuKGludmlzaWJsZSBtYWdpYyBodW1hbnMpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19jbmMiID0gIkNhbmNlciIpLCAKICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWZXJzaW9uIDEtLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCgojIFZlcnNpb24gMiAtLSAxOSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiUGVydSIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzZW5zX2dybSIsICJzZW5zX3JvbiIsICJzZW5zX3RheiIsICJzZW5zX29uaSIsICJzZW5zX3NtbiIsICJzZW5zX2RscCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNlbnNfZ3JtIiA9ICJHZXJtcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19yb24iID0gIlJvbmluXG4oQW5hY29uZGEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGF6IiA9ICJDb2ZmZWUgTXVnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfb25pIiA9ICJPbmkgSWJvXG4oZ29vZCBzcGlyaXQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfc21uIiA9ICJTdXBlcm1hbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2RscCIgPSAiSm9zaGluIEtva29zaGthXG4ocGluayByaXZlciBkb2xwaGluKSIpLCAKICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWZXJzaW9uIDItLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJPVEggVkVSU0lPTlMgQ09NQklORUQKCnBlcnVfc2Vuc19jb21iaW5lZCA8LSBkZl9zZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikgJT4lCiAgc2VsZWN0KHNlbnNfeXNoLCBzZW5zX3Bhciwgc2Vuc19nb2QsIHNlbnNfdGJsLCBzZW5zX25qdCwgc2Vuc19jaGEsIHNlbnNfY25jLAogICAgICAgICBzZW5zX2dybSwgc2Vuc19yb24sIHNlbnNfdGF6LCBzZW5zX29uaSwgc2Vuc19zbW4sIHNlbnNfZGxwKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19wYXIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc190YXogPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfeXNoID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcm9uID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfb25pID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX25qdCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKcGVydV9zZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkNhbiBfXyBiZSBzZW5zZWQ/LS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIikKYGBgCgojIyBIYXZlIHlvdSBldmVyIHNlbnNlZCBYPyAKCiMjIyBVUwoKYGBge3J9CiMgSnVzdCB2ZXJzaW9uIDEgcXVlc3Rpb25zLS10aGVyZSBhcmUgMjEgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgY29scyA9IGMoInVzZW5zX2dybSIsICJ1c2Vuc19kZW0iLCAidXNlbnNfbXVnIiwgInVzZW5zX2d2dCIsICJ1c2Vuc19zbW4iKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJ1c2Vuc19ncm0iID0gIkdlcm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ3Z0IiA9ICJHcmF2aXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJVUyBWZXJzaW9uIDEtLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJ1c2Vuc19jbmMiLCAidXNlbnNfZ29kIiwgInVzZW5zX3RibCIsICJ1c2Vuc19naHMiLCAidXNlbnNfaGFwIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygidXNlbnNfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ2hzIiA9ICJHaG9zdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfaGFwIiA9ICJIYXJyeSBQb3R0ZXIiKSwgCiAgICAgICAgICB0aXRsZSA9ICJVUyBWZXJzaW9uIDItLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIEJPVEggVkVSU0lPTlMgQ09NQklORUQgQlkgUVVFU1RJT04gVFlQRSAKdXNfdXNlbnNfY29tYmluZWQgPC0gZGZfdXNlbnMgJT4lCiAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIikgJT4lCiAgc2VsZWN0KHVzZW5zX2dybSwgdXNlbnNfZGVtLCB1c2Vuc19tdWcsIHVzZW5zX2d2dCwgdXNlbnNfc21uLAogICAgICAgICB1c2Vuc19jbmMsIHVzZW5zX2dvZCwgdXNlbnNfdGJsLCB1c2Vuc19naHMsIHVzZW5zX2hhcCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ3Z0ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX211ZyA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19kZW0gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ2hzID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2hhcCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19zbW4gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CnVzX3VzZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIlVTOiBIYXZlIHlvdSBldmVyIHNlbnNlZCBfXz8tLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIyBHaGFuYSAKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAzNSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiR2hhbmEiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygidXNlbnNfZ3JtIiwgInVzZW5zX2RlbSIsICJ1c2Vuc19tdWciLCAidXNlbnNfZnJjIiwgInVzZW5zX3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInVzZW5zX2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZGVtIiA9ICJEZW1vbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19mcmMiID0gIkZvcmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJHaGFuYSBWZXJzaW9uIDEtLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKIyBWZXJzaW9uIDIgLS0gMzUgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIkdoYW5hIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInVzZW5zX2NuYyIsICJ1c2Vuc19nb2QiLCAidXNlbnNfdGJsIiwgInVzZW5zX2FicyIsICJ1c2Vuc19rd2siKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJ1c2Vuc19jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc190YmwiID0gIlRhYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19hYnMiID0gIkFib3NvbSAoc21hbGwgZ29kKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19rd2siID0gIkt3ZWt1IEFuYW5zZSAoZmljLiBjaGFyLikiKSwgCiAgICAgICAgICB0aXRsZSA9ICJHaGFuYSBWZXJzaW9uIDItLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIApnaF91c2Vuc19jb21iaW5lZCA8LSBkZl91c2VucyAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSAlPiUKICBzZWxlY3QodXNlbnNfZ3JtLCB1c2Vuc19kZW0sIHVzZW5zX211ZywgdXNlbnNfZnJjLCB1c2Vuc19zbW4sCiAgICAgICAgIHVzZW5zX2NuYywgdXNlbnNfZ29kLCB1c2Vuc190YmwsIHVzZW5zX2FicywgdXNlbnNfa3drKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19mcmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfdGJsID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19hYnMgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfa3drID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKZ2hfdXNlbnNfY29tYmluZWQgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90eXBlLCAtcHJvcG9ydGlvbl95ZXMpLCB5ID0gcHJvcG9ydGlvbl95ZXMsIGZpbGwgPSBxdWVzdGlvbl90eXBlKSkgKwogIGdlb21fY29sKHdpZHRoID0gMC44KSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudF9mb3JtYXQoYWNjdXJhY3kgPSAxKSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsgICMgUmVtb3ZlcyB0aGUgbGVnZW5kCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChwcm9wb3J0aW9uX3llcywgYWNjdXJhY3kgPSAxKSksICAjIEFkZCB0ZXh0IG9uIHRoZSBiYXJzCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCBjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSA1KSArICAjIEFkanVzdCB0ZXh0IGFwcGVhcmFuY2UKICBsYWJzKAogICAgdGl0bGUgPSAiR2hhbmE6IEhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYAoKIyMjIEVjdWFkb3IKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAxMCBwYXJ0aWNpcGFudHMgCmV4aXN0X2Jhcihjb3VudHJ5ID0gIkVjdWFkb3IiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygidXNlbnNfZmx1IiwgInVzZW5zX3dlbiIsICJ1c2Vuc19tdWciLCAidXNlbnNfcGFyIiwgInVzZW5zX3NwZCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInVzZW5zX2ZsdSIgPSAiRGFpY2F3byAoZmx1KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc193ZW4iID0gIldlbmUgKGRlbW9uL2ZvcmVzdCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19zcGQiID0gIlNwaWRlcm1hbiIpLCAKICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFZlcnNpb24gMS0tSGF2ZSB5b3UgZXZlciBzZW5zZWQgX18/IiwgCiAgICAgICAgICBkYXRhID0gZGZfdXNlbnMpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiRWN1YWRvciIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJ1c2Vuc19jbmMiLCAidXNlbnNfZ29kIiwgInVzZW5zX3RibCIsICJ1c2Vuc19va3ciLCAidXNlbnNfcmFtIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygidXNlbnNfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfb2t3IiA9ICJPbm9rYXdhIChnaG9zdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcmFtIiA9ICJSYW1ibyIpLCAKICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFZlcnNpb24gMi0tSGF2ZSB5b3UgZXZlciBzZW5zZWQgX18/IiwgCiAgICAgICAgICBkYXRhID0gZGZfdXNlbnMpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyBCT1RIIFZFUlNJT05TIENPTUJJTkVEIEJZIFFVRVNUSU9OIFRZUEUgCmVjX3VzZW5zX2NvbWJpbmVkIDwtIGRmX3VzZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikgJT4lCiAgc2VsZWN0KHVzZW5zX2ZsdSwgdXNlbnNfd2VuLCB1c2Vuc19tdWcsIHVzZW5zX3BhciwgdXNlbnNfc3BkLAogICAgICAgICB1c2Vuc19jbmMsIHVzZW5zX2dvZCwgdXNlbnNfdGJsLCB1c2Vuc19va3csIHVzZW5zX3JhbSkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2ZsdSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfcGFyID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX211ZyA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc193ZW4gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19yYW0gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CmVjX3VzZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYAoKIyMjIFBlcnUKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAyMSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiUGVydSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJ1c2Vuc195c2giLCAidXNlbnNfcGFyIiwgInVzZW5zX2dvZCIsICJ1c2Vuc190YmwiLCAidXNlbnNfbmp0IiwgInVzZW5zX2NoYSIsICJ1c2Vuc19jbmMiKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJ1c2Vuc195c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX2dvZCIgPSAiR29kIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfdGJsIiA9ICJUYWJsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19uanQiID0gIk5pbmphIFR1cnRsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19jaGEiID0gIkNoYWlrb25pXG4oaW52aXNpYmxlIG1hZ2ljIGh1bWFucykiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19jbmMiID0gIkNhbmNlciIpLCAKICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWZXJzaW9uIDEtLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKCiMgVmVyc2lvbiAyIC0tIDE5IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInVzZW5zX2dybSIsICJ1c2Vuc19yb24iLCAidXNlbnNfdGF6IiwgInVzZW5zX29uaSIsICJ1c2Vuc19zbW4iLCAidXNlbnNfZGxwIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygidXNlbnNfZ3JtIiA9ICJHZXJtcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc190YXoiID0gIkNvZmZlZSBNdWciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfb25pIiA9ICJPbmkgSWJvXG4oZ29vZCBzcGlyaXQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX3NtbiIgPSAiU3VwZXJtYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZGxwIiA9ICJKb3NoaW4gS29rb3Noa2FcbihwaW5rIHJpdmVyIGRvbHBoaW4pIiksIAogICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uIFZlcnNpb24gMi0tSGF2ZSB5b3UgZXZlciBzZW5zZWQgX18/IiwgCiAgICAgICAgICBkYXRhID0gZGZfdXNlbnMpCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCT1RIIFZFUlNJT05TIENPTUJJTkVECgpwZXJ1X3VzZW5zX2NvbWJpbmVkIDwtIGRmX3VzZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikgJT4lCiAgc2VsZWN0KHVzZW5zX3lzaCwgdXNlbnNfcGFyLCB1c2Vuc19nb2QsIHVzZW5zX3RibCwgdXNlbnNfbmp0LCB1c2Vuc19jaGEsIHVzZW5zX2NuYywKICAgICAgICAgdXNlbnNfZ3JtLCB1c2Vuc19yb24sIHVzZW5zX3RheiwgdXNlbnNfb25pLCB1c2Vuc19zbW4sIHVzZW5zX2RscCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RheiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3lzaCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19nb2QgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3JvbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19vbmkgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19uanQgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfc21uID0gIkZpY3Rpb25hbCIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkocXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKSAgIyBPcmRlciBieSBwcm9wb3J0aW9uCgojIENyZWF0ZSBiYXIgcGxvdApwZXJ1X3VzZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYA==